您好,登錄后才能下訂單哦!
這篇文章主要為大家展示了“C語言中常見關鍵字有哪些”,內容簡而易懂,條理清晰,希望能夠幫助大家解決疑惑,下面讓小編帶領大家一起研究并學習一下“C語言中常見關鍵字有哪些”這篇文章吧。
首先我們簡單的和這些關鍵字見見面(被高亮的關鍵字是今天要介紹的)
這其中有大家熟知的數據類型:int
,char
,float
,double
…
也有控制語句用到的:if
,for
,do
…
還有一些就是今天主要介紹的關鍵字。
至于還有一些新增的關鍵字,以上表格未曾提到,大家如果想去了解,可自行查找。
個別術語介紹(可先跳過,后文如若遇到不懂,可回來了解)
自動變量:指的是局部作用域變量,具體來說即是在控制流進入變量作用域時系統自動為其分配存空間, 并在離開作用域時釋放空間的一類變量
存儲類:是C語言與C++語言的標準中,變量與函數的可訪問性(即作用域范圍)與生存期
寄存器:寄存器是CPU內部用來存放數據的一些小型存儲區域,用來暫時存放參與運算的數據和運算結果。
計算機中的數據可以存儲到:寄存器,高速緩存器,內存,硬盤,網盤
(以上存儲從左到右按照,內存越來越大,造假越來越低,傳輸速度越來越慢排序)
auto:聲明自動變量,一般都省略
默認情況下,在代碼塊內聲明的變量都是自動變量,但亦可用自動變量的關鍵字auto明確標識存儲類
代碼如下:
int a=0; //上下兩個變量其實相同,只不過上面省略了auto auto int a=0;
register:聲明寄存器變量
這個關鍵字定義變量后,會請求編譯器盡可能的將變量存在CPU內部寄存器中,而不是通過內存尋 址訪問,以提高效率。(因為寄存器很小,如果定義了很多register變量,可能會超過CPU的寄存 器個數,超過容量,故變量不是一定會存入寄存器內)
signed:有符號的(一般定義常量默認為signed)-------可以存儲正數和負數
unsigned:無符號的-----不能存儲負數
signed int a=10; //一般默認為signed,故只要寫成:int a=10; unsigned float=-75.3------>錯誤定義 float=-75.3------>正確定義 signed float=-75.3------->正確定義
typedef:類型重定義-------一般對于太過復雜的數據類型,可以重新定義一個簡單的或有辨識度的使用
typedef <數據類型> <你取的類型名>
unsigned long int a=10; //數據類型過于復雜,可以使用typedef重新定義 typedef unsigned long int u_l_int; u_l_int a=10; //與unsigned long int a=10等價
extern:用在變量或者函數的聲明前,用來說此變量/函數是在別處定義的,要在此處引用
默認情況下全局變量只能在定義它的文件中使用(從定義該全局變量開始到所在文件的文件尾), 但如果在另一個文件中將這個變量聲明為外部變量,那么這個變量的作用域將被擴展到另外一個文 件中。
代碼如下:
先在源文件中創建項目名為:main.c
#inlcude <stdio.h> extern int a; extern int Add(int x,int y); int main() { printf("%d\n",a); printf("%d\n",Add(3,2)); }
再在源文件中創建項目名為:test.c-------作為全局變量
,函數定義的文件
int a=10;//全局變量 int Add(int x,int y)// { return x+y;//函數定義 }
結果會輸出10,5
變量的聲明有兩種情況
一種是需要建立存儲空間的。例如:int a 在聲明的時候就已經建立了存儲空間。
另一種是不需要建立存儲空間的,通過使用extern關鍵字聲明變量名而不定義它。
例如:
extern int a
其中變量 a 可以在別的文件中定義的。extern int i;
//聲明,不是定義int i;
//聲明,也是定義定義分配存儲空間,而聲明不會
如何區分聲明還是變量
extern
告訴編譯器變量在其他地方定義了
如果聲明有初始化式,就被當作定義,即使前面加了extern
函數的聲明和定義區別比較簡單,帶有{ }的就是定義,否則就是聲明
沒有extern
關鍵字的都是變量的定義
static:
static:聲明靜態變量
修飾局部變量 使其生命周期變長(本質上改變了變量的存儲類型)
修飾全局變量 改變了全局變量的作用域,讓靜態的全局變量只能在自己的源文件內使用全局變量在其他源文件內部可以被使用,是因為全局變量具有外部鏈接屬性。但是被static修飾后,就變成了內部鏈接屬性,其他源文件就不能鏈接到這個靜態的全局變量
修飾函數 改變了函數的鏈接屬性,將函數的外部鏈接屬性變成了內部鏈接屬性,使得函數只能在自己所在的源文件內部使用
解釋1,代碼如下:
#include <stdio.h> void Add(int x) { static int a=2; a++; printf("%d ",x+a); } int main() { int i=0; for(i=0;i<3;i++) { Add(1); } return 0; }
結果是4 5 6
,大家知道int a=2
是一個自動變量,在他作用域結束后,空間就會釋放掉,a的值不能保存。
而加上static改變了他的生命周期,使他在整個項目結束前的一直存在,所以a的值會不斷迭代
解釋2,3,代碼如下:(引用extern的內容,大家可以自行對比)
先在源文件中創建項目名為:main.c
##inlcude <stdio.h> extern int a; extern int Add(int x,int y); int main() { printf("%d\n",a); printf("%d\n",Add(3,2)); }
再在源文件中創建項目名為:test.c-------作為全局變量,函數定義的文件
static int a=10;//全局變量 static int Add(int x,int y) { return x+y;//函數定義 }
產生結果如下:
最后注意:#define和#include不是關鍵字,是預處理指令
以上是“C語言中常見關鍵字有哪些”這篇文章的所有內容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內容對大家有所幫助,如果還想學習更多知識,歡迎關注億速云行業資訊頻道!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。