C語言常量、變量和關鍵字


一、一切都是數據

對計算機來說,圖片、文字、音樂、視頻等一切都是數據,在計算機中以二進制的0和1存儲。

我們編寫程序的目的就是告訴計算機如何輸入、處理、傳輸、存儲和展示數據。

數據分為靜態數據和動態數據。

1、靜態數據

永久性的數據,存儲在永久的介質中,如硬盤、磁帶、U盤、光盤等,只要介質沒壞數據都是存在的,電腦關機重啟后依然存在。

2、動態數據(臨時數據)

程序在運行過程中,動態產生的的臨時數據,一般存儲在內存中,程序退出或者電腦關機時這些臨時數據會被清除。

為什么不把動態數據存放到硬盤?因為計算機訪問內存的速度比訪問硬盤快很多。硬盤的存儲空間比內存大,價格比內存便宜。

二、常量

常量或常數,表示固定不變的數據,是具體的數據。

1)字符常量,如'6','a','F',不能是中文,例如'女',因為一個漢字和全角的符號占兩個字節(GBK編碼)。

2)整型常量,如6,27,-299。

3)浮點型常量,如5.43,-2.3,5.67,6.0。

4)字符串常量,如"625","女","www.freecplus.net","西施"。

三、變量

常量是數據,變量是存放數據的容器,和常量在稱呼上只差一個字,但不是兄弟關系,而是水與水桶的關系。

變量使用前必須先進行聲明(或定義),向操作系統申請一塊內存空間,用於存放數據。

1、整數型、字符型、浮點型變量

變量的聲明,也稱之為變量的定義,或定義變量,或聲明變量,這些都是程序員的習慣叫法,實際上都是同一個意思。

定義整數型變量用關鍵字int,它是單詞integer(整數)的縮寫。

  int   ii;           // 定義整數型變量,用於存放整數。

定義字符型變量用關鍵字char,它是單詞character(字符)的縮寫。

  char  cc;          // 定義字符型變量,用於存放字符。

定義浮點型變量用關鍵字float或double,float的精度不夠,實際開發中建議棄用。double,雙精度,很精確的意思。

double money;   // 定義浮點型變量,用於存放浮點數。

2、字符串變量

在C語言中,沒有“字符串”這個數據類型,而是用字符數組來存放字符串,並提供了豐富的庫函數來操作字符串。

char name[21];       // 定義一個可以存放20字符的字符串。

注意幾個細節:

1)如果要定義一個存放20個英文的字符串,數組的長度應該是20+1,原因以后再討論。

2)中文的漢字和標點符號需要兩個字符寬度來存放。

例如name[21]可以存放20個英文字符,或10個中文字符。

3)字符串不是C語言的基本數據類型,不能用“=”賦值,不能用“>”和“<”比較大小,不能用“+”拼接,不能用==和!=判斷兩個字符串是否相同,要用函數,具體方法我以后再介紹,現在了解就可以。

3、變量的命名

變量名屬於標識符,需要符合標識符的命名規范,具體如下:

1)變量名的第一個字符必須是字母或下划線,不能是數字和其它字符。

2) 變量名中的字母是區分大小寫的。比如 a 和 A 是不同的變量名,num和Num也是不同的變量名。

3)變量名絕對不可以是C語言的關鍵字。

4)關於變量的命名,為了便於理解,盡可能用英文單詞或多個英文單詞的簡寫,太短不能表達含義,太長了書寫麻煩,如果英語不好,那就用中文拼英的第一個字母,例如身份證號碼,cardid、userid都可以,sfzhm也行,不要怕被笑話,英語不好的程序員很多。

四、C語言的關鍵字

關鍵字也稱為保留字,共32個,這些單詞在C語言中有特別的含義,程序員不能把它用於變量或函數的命名。

auto :聲明自動變量
break:跳出當前循環
case:開關語句分支
char :聲明字符型變量或函數返回值類型
const :聲明只讀變量
continue:結束當前循環,開始下一輪循環
default:開關語句中的“默認”分支
do :循環語句的循環體
double :聲明雙精度浮點型變量或函數返回值類型
else :條件語句否定分支(與 if 連用)
enum :聲明枚舉類型
extern:聲明變量或函數是在其它文件或本文件的其他位置定義
float:聲明浮點型變量或函數返回值類型
for:一種循環語句
goto:無條件跳轉語句
if:條件語句
int: 聲明整型變量或函數
long :聲明長整型變量或函數返回值類型
register:聲明寄存器變量
return :子程序返回語句(可以帶參數,也可不帶參數)
short :聲明短整型變量或函數
signed:聲明有符號類型變量或函數
sizeof:計算數據類型或變量長度(即所占字節數)
static :聲明靜態變量
struct:聲明結構體類型
switch :用於開關語句
typedef:用以給數據類型取別名
unsigned:聲明無符號類型變量或函數
union:聲明共用體類型
void :聲明函數無返回值或無參數,聲明無類型指針
volatile:說明變量在程序執行中可被隱含地改變
while :循環語句的循環條件

C語言的關鍵字無需背誦,如果程序用不小心用了關鍵字給變量命名,編譯時會報錯,用多了就熟悉了。

五、變量的初始化

變量在定義后,操作系統為它分配了一塊內存,但並不會把這塊內存打掃干靜,也就是說內存中可能有垃圾數據,建議在使用之間對其初始化(打掃干靜)。

變量初始化是一個良好的編程習慣,否則有時候程序可能會產生意想不到的結果。

1、整數型、字符型、浮點型變量初始化

對整數型、字符型、浮點型變量來說,初始化就是給它們賦0值。

可以在定義的時候立即初始化。

  int   ii=0;          // 定義整數型變量並初始化
  char  cc=0;          // 定義字符型變量並初始化
  double money=0;     // 定義浮點型變量並初始化

也可以先定義,然后再初始化。

  int   ii;          // 定義整數型變量
  char  cc;          // 定義字符型變量
  double money;     // 定義浮點型變量
  ii=0;              // 初始化ii為0
  cc=0;              // 初始化cc為0
  money=0;          // 初始化money為0

2、字符串變量的初始化

對字符串變量來說,初始化就是把內容清空,本質上也是賦0值。

  char name[21];                    // 定義一個可以存放20字符的字符串
  memset(name,0,sizeof(name));   // 清空字符串name中的內容

注意了,字符串變量的初始化與其它類型不同,要用memset函數,先不要問為什么,就這么抄,以后再解釋,先不要花時間和精力去研究它。

六、變量的賦值

把常量的值賦給變量:

  ii=10;                  // 整數型變量賦值10
  cc='A';                 // 字符型變量賦值'A'
  money=1500.87;         // 浮點型變量賦值1500.87
  strcpy(name,"西施");   // 對字符串變量賦值"西施"

把變量的值賦給變量:

  int ii1=ii;               // 定義變量ii1並把ii的值賦給它
  char cc1=cc;              // 定義變量cc1並把cc的值賦給它
  double money1=money;    // 定義變量money1並把money的值賦給它
  char name1[21];          // 定義字符串變量name1
  strcpy(name1,name);     // 把name的值賦給name1

注意了,字符串變量的賦值與其它類型不同,不能用=號,要用strcpy函數,先不要問為什么,就這么抄,以后再解釋,先不要花時間和精力去研究它。

示例(book6.c)

/*
 *  程序名:book6.c,此程序演示變量的賦值
 *  作者:C語言技術網(www.freecplus.net) 日期:20190525
*/
#include <stdio.h>
#include <string.h>

int main()
{
  int   ii=0;       // 定義整數型變量並初始化
  char  cc=0;       // 定義字符型變量並初始化
  double money=0;   // 定義浮點型變量並初始化
  char name[20];    // 定義字符串變量
  memset(name,0,sizeof(name));  // 字符串初始化

  ii=10;                 // 整數型變量賦值10
  cc='A';                // 字符型變量賦值'A'
  money=1500.87;        // 浮點型變量賦值1500.87
  strcpy(name,"西施");  // 對字符串變量賦值"西施"

  printf("ii=%d=\n",ii);
  printf("cc=%c=\n",cc);
  printf("money=%f=\n",money);
  printf("name=%s=\n",name);
}

運行效果

[外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(img-I5nH0mha-1583200921673)(media/6f29d51b7872a6778b09dea8098346c5.png)]

七、多變量操作

1、多個變量的定義

定義多個變量可以書寫多條語句。

int ii;
int jj;

相同類型變量的定義可以書寫為一條語句,如下:

int ii,jj;

2、多個變量的賦值

整數、字符和浮點型變量可以用一條語句對多個變量賦相同的值,如果要賦不同的值,只能用多條語句了。

ii=jj=10;     // 對ii和jj賦相同的值10
ii=jj=30;     // 對ii和jj賦相同的值30
ii=10;        // 對ii賦值10
jj=30;        // 對jj賦值30

不論值是否相同,一條語句只能對一個字符串變量賦值。

strcpy(name,"西施");          // 對字符串變量name賦值"西施"
strcpy(name1,"西施");         // 對字符串變量name1賦值"西施"
strcpy(name,name1,"西施");   // 這是個天才的想法,但行不通,不符合strcpy函數的語法。

這是個天才的想法,但行不通,不符合strcpy函數的語法。

八、const約束

const 是 constant 的縮寫,意思是“恆定不變的”,它是定義只讀變量的關鍵字。用 const定義只讀變量的方法很簡單,就在定義變量時前面加 const 即可,如:

const  double  pi = 3.1415926;

用 const定義的變量的值是不允許改變的,不允許給它重新賦值,即使是賦相同的值也不可以。所以說它定義的是只讀變量。這也就意味着必須在定義的時候就給它賦初值,如果程序中試圖改變它的值,編譯的時候就會報錯。

示例(book7.c)

/*
 *  程序名:book7.c,此程序演示只讀變量
 *  作者:C語言技術網(www.freecplus.net) 日期:20190525
*/
#include <stdio.h>

int main()
{
  const double pi=3.1415926;   // 定義只讀變量

  pi=3.1415927;    // 試圖改變只讀變量的值。
}

編譯效果

[外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(img-mOpT1nRN-1583200921676)(media/0b957a8f97ddcc35f9aa2aeaed5a83cf.png)]

九、課后作業

本章節介紹的是一些基本概念,各位只要理解了這些概念就行了,編寫示例程序,把本章節介紹的知識點全部演示一遍,用程序演示可以加深理解和映象。

還有一個注意事項,C語言很多知識點是交叉的,如果課程中出現的內容是沒有介紹的知識點,先照抄就行,不要去糾結它的細節,以后在合適的時機再介紹它。

十、版權聲明

C語言技術網原創文章,轉載請說明文章的來源、作者和原文的鏈接。
來源:C語言技術網(www.freecplus.net)
作者:碼農有道

如果文章有錯別字,或者內容有錯誤,或其他的建議和意見,請您留言指正,非常感謝!!!


免責聲明!

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



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