1. 程式人生 > 實用技巧 >C語言重要知識點總結【7】:C語言中的常量、變數、識別符號

C語言重要知識點總結【7】:C語言中的常量、變數、識別符號

C語言重要知識點總結【7】:C語言中的常量、變數、識別符號

目錄

  • 一、常量-
      3.1 普通字元- 3.2 轉義字元(表格)- 3.3 常見字元與ASCII程式碼表- 4.1 字串所佔記憶體位元組數-

      大一下學期學習了C語言、暑假在家沒事又把C語言複習了一遍。因此,趁熱打鐵,把所學內容寫成筆記,以便以後複習,也希望能夠幫助大家學好C語言。
      以下內容如有錯誤,請大家在評論區指正,謝謝支援,共同進步。 go、go、go !!!

      一、常量

      在C語言中,資料有常量和變數之分: 若在程式執行過程中,其數值可以改變的量稱為`變數`
      常量:分為 直接常量 和 符號常量 。直接常量:分為整型常量、實型常量、字元常量和字串常量。(通常將整型常量和實型常量合稱為數值常量)

      首先大概看一下關於常量的內容:

      1. 整型常量:就是常整數,包括正整數、負整數和0。有十進位制八進位制十六進位制三種表示形式。需要注意的是,八進位制常整數在書寫時以數字0作字首;十六進位制以0x作字首。1. 實型常量 :又稱浮點型常量,採用十進位制小數形式指數形式表示。1. 字元型常量 :用單引號括起來的單個字元,分為普通字元(‘a’,‘Z’,‘6’,’#’,’?’ )和轉義字元(’\n’是換行符、’\t’是水平製表符,橫向跳格,8個空格)1. 字串常量 :用雙引號括起來的字串1. 符號常量:用標示符代表一個常量,使用之前必須定義,具有一改全改的優點。例如: #define PI 3.14 ## 1. 整型常量

      整型常量:包括正整數負整數0

      1. 十進位制整數:書寫形式通常是整數的寫法。例如:0、16、88、666、-99 等。1. 八進位制整數:書寫形式通常在八進位制整數的前面加一個數字0(0作字首)。例如:00、0111、015、021等,它們分別表示十進位制整數:0、73、13、17。1. 十六進位制整數:書寫形式通常是在十六進位制整數的前面加0x(0x作字首)。其中每個數字可以是 0 ~ 9、a ~ f 或 A~F 中的數字或英文字母。 例如:0x0(十進位制0)、0x111(十進位制273) 、0x15(十進位制21)、0x21(十進位制33 )、0x5a(十進位制90 )、0Xa5(十進位制165 )…… ## 2. 實型常量(浮點型常量)

      實型常量:又稱浮點型常量,有 十進位制小數形式指數形式 2種表示形式。

      ① 十進位制小數形式:

      由數字和小數點組成

      例如:3.141590.088.00.123-6.66

      ② 指數形式:

      由於計算機輸入或輸入是無法表示上角或下角,故規定以字母e或E代表以10為底的指數

      指數形式的實型常量 由十進位制小數形式 或 十進位制整型常量部分 + 指數部分,即e或E之前必須有數字,且e或E後面必須為整數。 錯誤形式: 0.35e 【e後面缺少一個整數】
      78e-1.2 【1.2 不是整數】

      3. 字元常量

      3.1 普通字元

      普通字元:用單撇號括起來的一個字元

      • 單引號括起來的字元包括:英文字母大、小寫字元各26個、數字字元10個,以及空白符(空格符、製表符、換行符),標點和特殊符號(鍵盤上的共30個),它們也稱為C語言的基本字符集。- 如’a’,‘Z’,‘6’,’#’,’?’ 等是合法的字元常量,在記憶體中佔一個位元組。- 單引號內如果是一個空格符,也是一個字元常量。- 字元常量的值,就是它在ASCII編碼表中的值是個從0~127之間的整數,因此字元常量可以作為整型資料來進行運算。- 表示式 ‘Y’+32 的值為 121,字元'Y'對應ASCII碼值是89- 表示式 ‘7’+‘6’ 的值為109,通過查表可以發現'7''6'對應的ASCII碼值分別是55和54。應該注意’7’和7是不一樣的,作為字元常量'7'所代表的整型常量值是55,7對應的是整型常量7。 ### 3.2 轉義字元(表格)

      轉義字元主要用來表示那些用一般字元不便於表示的控制程式碼,構成字元常量的控制字元必須用轉義字元表示,這種“控制字元”在螢幕上是不能顯示的,轉義字元雖然包含兩個或多個字元,但它只代表一個字元。轉義字元的意思是將 \後面的字元轉換成另外的意義。

      轉義字元分為一般轉義字元、八進位制轉義字元和十六進位制轉義字元。

      • 一般轉義字元'\n'是換行符、'\t'是水平製表符(將輸出的位置跳到下一個Tab位置,一個Tab位置為8,即橫向空8個格),'\?'是一個問號……- 八進位制轉義字元:反斜線後的八進位制數可以不用 0 開頭,由 反斜槓’’ 和隨後的 1~3個八進位制數字 構成的字元序列。’\60’’\101’’\141’分別表示字元’0’、‘A’和’a’。因為字元’0’、'A’和’a’的ASCII碼的八進位制值分別為60、101和141。- 十六進位制轉義字元反斜槓’’字母x(字母x是小寫,不能用大寫X)及隨後的 1~2個十六進位制數字 構成的字元序列。’\x30’’\x41’’\X61’ 分別表示字元’0’、‘A’和’a’。因為字元’0’、'A’和’a’的ASCII碼的十六進位制值分別為0x30、0x41和0x61。 最後一個小知識點:換行符'\n'對應的十進位制數是10,可以用八進位制數 '\012'表示。
      共13個轉義字元含義(字元值)作用
      1`\'`單撇號輸出單撇號 `'`
      2`\"`雙撇號輸出雙撇號`"`
      3`\?`問號輸出問號字元`?`
      4`\\`反斜線輸出反斜線字元`\`
      5`\a`警告(alert)產生聲音或視覺訊號
      6`\b`退格(backspace)將游標當前位置後退一個字元
      7`\f`換頁(form feed)將游標當前位置移動到下一頁的開頭
      8`\n`換行將游標當前位置移動到下一行的開頭
      9`\r`回車將游標當前位置移動到本行的開頭0
      10`\t`水平製表符將游標當前位置移動到下一個Tab位置1
      11`\v`垂直製表符將游標當前位置移動到下一個垂直製表對齊點2
      -轉義字元含義(字元值)作用
      12`\o \oo 或 \ooo` 其中`o`代表一個八進位制數字八進位制碼對應的ASCLL字元與該八進位制對應的字元3
      13`\xh[h···]` 其中`h`代表一個十六進位制數字與十六進位制碼對應的ASCLL字元與該十六進位制對應的字元

      3.3 常見字元與ASCII程式碼表


      4. 字串常量

      字串常量是用 雙撇號 "" 括起來的多個字元的序列,如:“a”、“abc123”、“China”、“你好”……

      • 只要是“雙撇號”括起來的,就算只有一個字元也叫字串,如"a"。字元常量 'a’與字串常量"a"是不同的。- 一個字元在記憶體中只佔一位元組,而字串本質上是多個字元組成的字元陣列。C語言規定,在每一個字串常量的結尾,系統都會自動加一個字元’\0’作為該字串的“結束標誌符”,系統據此判斷字串是否結束。 這裡要特別強調一點:’\0’是系統自動加上的,不是人為新增的。- ’\0’ 是 ASCII 碼為 0 的字元,它不會引起任何控制動作,也不是一個可以顯示的字元。- 比如字串常量"CHINA",表面上看它只有 5 個字元,但實際上它在記憶體中佔6個節,‘C’、‘H’、‘I’、‘N’、‘A’、’\0’ 各佔一個位元組。如果要輸出該字串,’\0’ 不會輸出。也就是說,雖然實際上總共有 6 個字元,’\0’ 也包括在其中,但輸出時 ‘\0’ 不會輸出。系統從第一個字元 ‘C’ 開始逐個輸出字元,直到遇到 ‘\0’,則表示該字串結束,停止輸出。- 如果“雙撇號”中能看見的字元有 n 個,則該字串在記憶體中所佔的記憶體空間為 n+1 位元組。 ### 4.1 字串所佔記憶體位元組數
      1. 雙撇號中什麼都不寫,則只有 ‘\0’ 一個字元,所以只佔1位元組。1. "a" 有 1 個可見字元,佔 2 位元組。1. "China" 有 5 個可見字元,佔 6 位元組。1. "How are you"中,空格也是字元(佔一個位元組),也算是可見的,所以總共有 11 個可見字元,共佔 12 位元組。1. "I love you"共 10 個可見字元,共佔 11 位元組。1. "你好",可見4個位元組,共佔 5 位元組。 【注意】第6個"你好"為什麼佔 5 位元組?有 2 個可見字元不是應該佔3位元組嗎?C 語言規定,1個英文字元佔 1個位元組,而 1箇中文字元佔 2個位元組,就算是中文的標點符號也是佔 2個位元組。所以兩個漢字佔 4 位元組,加上 ‘\0’ 總共是 5 位元組。

      5. 符號常量

      符號常量:用標示符代表一個常量,使用之前必須定義,具有一改全改的優點。

      定義符號常量的一般形式

      #define 識別符號 常量

      例如:將PI定義為符號常量

      #define  PI 3.14
      • 要區分符號常量和變數是不一樣的,符號常量不佔記憶體,只是一個臨時符號,代表一個值,在預編譯後這個符號就不存在了,故不能對符號常量賦新值。- 為與變數名相區別,習慣上符號常量用大寫字母表示,如PI(π),PRICE(價格),N(數)等 ``` #include<stdio.h> #define IP 3.14 //符號常量:在使用之前必須先定義
                        //優點:改一處,即改全部
        
        //從此行開始,以後所有的PI都代表3.14 int main() { float r,S,V; //定義3個單精度浮點型變數 r,c,s printf("請輸入圓的半徑 r="); scanf("%f",&r); //輸入圓的半徑 S=4IPrr; V=4.0/3IPrr*r; printf("\n圓的表面積 S=%.2f\n",S); printf("圓的體積 V=%.2f\n",V); return 0; }
      
      執行結果…………………………………………<br> <img src="https://img-blog.csdnimg.cn/20200824175315446.png#pic_center" alt="在這裡插入圖片描述">
      
      # 二、變數
      
      >  
       變數代表一個`有名字`、具`有特定屬性`的一個<mark>儲存單元</mark>。他用來存放資料,也就是存放變數的值。在對程式編譯連線時有編譯系統給每一個變數名分配一個 **儲存地址** 。 
      
      - **變數名開頭必須是字母或下劃線,不能是數字。** 實際程式設計中最常用的是以字母開頭,而以下劃線開頭的變數名一般都是系統專用的。- **變數名絕對不可以是C語言關鍵字**(C語言關鍵字一般常用的有32個,在譚浩強寫的《C程式設計》中有37個關鍵字),並且變數不能有空格。- 變數名的長度應當符合“min-length && max-information”原則。- 大寫字母和小寫字母是兩個不同的字元,sum和SUM不同變數名。- 一般而言,變數名用小寫字母表示,與人們日常習慣一致,以提高可讀性。
      變數的資料型別:
      
      <img src="https://img-blog.csdnimg.cn/20200824184838160.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl80NjAyMjA4Mw==,size_16,color_FFFFFF,t_70#pic_center" alt="在這裡插入圖片描述">
      
      ### 1. 常變數
      
      C99允許使用常變數,方法是在定義變數時,前面加一個`關鍵字const`。

      const int a=3; //定義一個整型變數,指定其值為3, //而且在變數的存在期間其值不能改變。

      
      常變數具有變數的基本屬性:有型別、佔儲存單元,只是不允許改變其值。常變數具有符號常量的優點,使用更方便。
      
      <mark>常變數與符號符號常量區別</mark>
      
      在編譯後符號常量就不存在了,二常變數需要佔用儲存單元。

      define PI 3.1415926 //定義符號常量

      const float pi=3.1415926 //定義常變數

      ```

      注意:有些編譯系統還未實現C99的功能,初學者儘量不用,瞭解即可。但如果當你對C語言更加深入地去學習,常變數其實也是一個比較重要的知識點。

      三、識別符號

      用來對變數、符號常量名、函式、陣列、型別、等命名的有效字元序列統稱識別符號(identifier)。

      C語言規定識別符號只能由字母數字下畫線3種字元組成,且第一個字元必須是字母或下畫線

      • 例如:sum ,average , _total , Class , day ,month , Student_name , lotus_1_2_3 , BASIC , li_ling……- 不合法識別符號:M.D.John ,¥123 , #33 , 3D64 , a>b(不能用標點符號 . ¥ # 等)- 識別符號可以任意長,但一般只有前32位有效 C語言識別符號分為以下三類:
      1. 關鍵字(32個)auto、break、case、char、const 、continue、default、do、double、else、enum、extern float、for、goto、if、int、long、register、return、short、signed、sizeof、static、struct、switch、typedef、union、unsigned、void、volatile、while,關鍵字是C語言中用來表示特殊含義的識別符號,由系統提供。關鍵字有特定的語法意義,不允許使用者重新定義,也不能用作變數名或函式名。1. 預定義識別符號: C語言中預先定義了一些識別符號,他們有特定的含義,通常用做固定的庫函式中的函式名預編譯處理中的專門命令。如scanfprintffabssqrtdefineinclude等。C語言允許使用者識別符號與預定義識別符號同名,但這將使這些識別符號失去系統規定的原意。為了避免誤解,建議使用者為識別符號取名時儘量不要與系統預先定義的標準識別符號(如標準函式)同名。1. 使用者識別符號:使用者識別符號是由使用者自己定義的識別符號,命名時應遵守識別符號命名的原則,最好做到見名知義,這樣可以提高程式的可讀性,一般選用相應的英文單詞或拼音字母的形式,如minmaxsumscore(成績)aver(平均值)row(行)colum(列)total(總數)max_value…… 變數的資料型別:

      最後推薦系列文章: