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…… 變量的數據類型:

      在這里插入圖片描述

      最后推薦系列文章:

      在這里插入圖片描述


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM