溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶(hù)服務(wù)條款》

C語(yǔ)言中常見(jiàn)關(guān)鍵字有哪些

發(fā)布時(shí)間:2021-09-14 17:46:51 來(lái)源:億速云 閱讀:143 作者:小新 欄目:開(kāi)發(fā)技術(shù)

這篇文章主要為大家展示了“C語(yǔ)言中常見(jiàn)關(guān)鍵字有哪些”,內(nèi)容簡(jiǎn)而易懂,條理清晰,希望能夠幫助大家解決疑惑,下面讓小編帶領(lǐng)大家一起研究并學(xué)習(xí)一下“C語(yǔ)言中常見(jiàn)關(guān)鍵字有哪些”這篇文章吧。

首先我們簡(jiǎn)單的和這些關(guān)鍵字見(jiàn)見(jiàn)面(被高亮的關(guān)鍵字是今天要介紹的)

C語(yǔ)言中常見(jiàn)關(guān)鍵字有哪些

這其中有大家熟知的數(shù)據(jù)類(lèi)型:int,char,float,double

也有控制語(yǔ)句用到的:if,for,do

還有一些就是今天主要介紹的關(guān)鍵字。

至于還有一些新增的關(guān)鍵字,以上表格未曾提到,大家如果想去了解,可自行查找。

個(gè)別術(shù)語(yǔ)介紹(可先跳過(guò),后文如若遇到不懂,可回來(lái)了解)

自動(dòng)變量:指的是局部作用域變量,具體來(lái)說(shuō)即是在控制流進(jìn)入變量作用域時(shí)系統(tǒng)自動(dòng)為其分配存空間, 并在離開(kāi)作用域時(shí)釋放空間的一類(lèi)變量

存儲(chǔ)類(lèi):是C語(yǔ)言與C++語(yǔ)言的標(biāo)準(zhǔn)中,變量與函數(shù)的可訪(fǎng)問(wèn)性(即作用域范圍)與生存期

寄存器:寄存器是CPU內(nèi)部用來(lái)存放數(shù)據(jù)的一些小型存儲(chǔ)區(qū)域,用來(lái)暫時(shí)存放參與運(yùn)算的數(shù)據(jù)和運(yùn)算結(jié)果。

計(jì)算機(jī)中的數(shù)據(jù)可以存儲(chǔ)到:寄存器,高速緩存器,內(nèi)存,硬盤(pán),網(wǎng)盤(pán)

(以上存儲(chǔ)從左到右按照,內(nèi)存越來(lái)越大,造假越來(lái)越低,傳輸速度越來(lái)越慢排序)

1、auto

auto:聲明自動(dòng)變量,一般都省略

默認(rèn)情況下,在代碼塊內(nèi)聲明的變量都是自動(dòng)變量,但亦可用自動(dòng)變量的關(guān)鍵字auto明確標(biāo)識(shí)存儲(chǔ)類(lèi)

代碼如下:

int a=0;
//上下兩個(gè)變量其實(shí)相同,只不過(guò)上面省略了auto
auto int a=0;

2、register

register:聲明寄存器變量

這個(gè)關(guān)鍵字定義變量后,會(huì)請(qǐng)求編譯器盡可能的將變量存在CPU內(nèi)部寄存器中,而不是通過(guò)內(nèi)存尋 址訪(fǎng)問(wèn),以提高效率。(因?yàn)榧拇嫫骱苄?,如果定義了很多register變量,可能會(huì)超過(guò)CPU的寄存 器個(gè)數(shù),超過(guò)容量,故變量不是一定會(huì)存入寄存器內(nèi))

3、signed和unsigned

signed:有符號(hào)的(一般定義常量默認(rèn)為signed)-------可以存儲(chǔ)正數(shù)和負(fù)數(shù)

unsigned:無(wú)符號(hào)的-----不能存儲(chǔ)負(fù)數(shù)

signed int a=10; //一般默認(rèn)為signed,故只要寫(xiě)成:int a=10;
    
unsigned float=-75.3------>錯(cuò)誤定義
    
float=-75.3------>正確定義

signed float=-75.3------->正確定義

4、typedef

typedef:類(lèi)型重定義-------一般對(duì)于太過(guò)復(fù)雜的數(shù)據(jù)類(lèi)型,可以重新定義一個(gè)簡(jiǎn)單的或有辨識(shí)度的使用

typedef <數(shù)據(jù)類(lèi)型> <你取的類(lèi)型名>

unsigned long int a=10;  //數(shù)據(jù)類(lèi)型過(guò)于復(fù)雜,可以使用typedef重新定義
    
typedef unsigned long int u_l_int;

u_l_int a=10;          //與unsigned long int a=10等價(jià)

5、extern

extern:用在變量或者函數(shù)的聲明前,用來(lái)說(shuō)此變量/函數(shù)是在別處定義的,要在此處引用

默認(rèn)情況下全局變量只能在定義它的文件中使用(從定義該全局變量開(kāi)始到所在文件的文件尾), 但如果在另一個(gè)文件中將這個(gè)變量聲明為外部變量,那么這個(gè)變量的作用域?qū)⒈粩U(kuò)展到另外一個(gè)文 件中。

代碼如下:

先在源文件中創(chuàng)建項(xiàng)目名為: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));
}

再在源文件中創(chuàng)建項(xiàng)目名為:test.c-------作為全局變量,函數(shù)定義的文件

int a=10;//全局變量
int Add(int x,int y)//
{
 return x+y;//函數(shù)定義
}

結(jié)果會(huì)輸出10,5

6、拓展

變量的聲明有兩種情況

  •  一種是需要建立存儲(chǔ)空間的。例如:int a 在聲明的時(shí)候就已經(jīng)建立了存儲(chǔ)空間。

  •  另一種是不需要建立存儲(chǔ)空間的,通過(guò)使用extern關(guān)鍵字聲明變量名而不定義它。

例如:extern int a 其中變量 a 可以在別的文件中定義的。
extern int i; //聲明,不是定義
int i; //聲明,也是定義

定義分配存儲(chǔ)空間,而聲明不會(huì)

如何區(qū)分聲明還是變量

extern告訴編譯器變量在其他地方定義了
如果聲明有初始化式,就被當(dāng)作定義,即使前面加了extern
函數(shù)的聲明和定義區(qū)別比較簡(jiǎn)單,帶有{ }的就是定義,否則就是聲明
沒(méi)有extern關(guān)鍵字的都是變量的定義

static:

static:聲明靜態(tài)變量

  • 修飾局部變量 使其生命周期變長(zhǎng)(本質(zhì)上改變了變量的存儲(chǔ)類(lèi)型)

  • 修飾全局變量 改變了全局變量的作用域,讓靜態(tài)的全局變量只能在自己的源文件內(nèi)使用全局變量在其他源文件內(nèi)部可以被使用,是因?yàn)槿肿兞烤哂型獠挎溄訉傩?。但是被static修飾后,就變成了內(nèi)部鏈接屬性,其他源文件就不能鏈接到這個(gè)靜態(tài)的全局變量

  • 修飾函數(shù) 改變了函數(shù)的鏈接屬性,將函數(shù)的外部鏈接屬性變成了內(nèi)部鏈接屬性,使得函數(shù)只能在自己所在的源文件內(nèi)部使用


解釋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;
}

結(jié)果是4 5 6,大家知道int a=2是一個(gè)自動(dòng)變量,在他作用域結(jié)束后,空間就會(huì)釋放掉,a的值不能保存。

而加上static改變了他的生命周期,使他在整個(gè)項(xiàng)目結(jié)束前的一直存在,所以a的值會(huì)不斷迭代

解釋2,3,代碼如下:(引用extern的內(nèi)容,大家可以自行對(duì)比)

先在源文件中創(chuàng)建項(xiàng)目名為: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));
}

再在源文件中創(chuàng)建項(xiàng)目名為:test.c-------作為全局變量,函數(shù)定義的文件

static int a=10;//全局變量
static int Add(int x,int y)
{
 return x+y;//函數(shù)定義
}

產(chǎn)生結(jié)果如下:

C語(yǔ)言中常見(jiàn)關(guān)鍵字有哪些

最后注意:#define和#include不是關(guān)鍵字,是預(yù)處理指令

以上是“C語(yǔ)言中常見(jiàn)關(guān)鍵字有哪些”這篇文章的所有內(nèi)容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內(nèi)容對(duì)大家有所幫助,如果還想學(xué)習(xí)更多知識(shí),歡迎關(guān)注億速云行業(yè)資訊頻道!

向AI問(wèn)一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI