溫馨提示×

溫馨提示×

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

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

C語言關鍵字及變量怎么定義與聲明

發(fā)布時間:2022-09-20 14:39:51 來源:億速云 閱讀:170 作者:iii 欄目:開發(fā)技術

這篇“C語言關鍵字及變量怎么定義與聲明”文章的知識點大部分人都不太理解,所以小編給大家總結了以下內容,內容詳細,步驟清晰,具有一定的借鑒價值,希望大家閱讀完這篇文章能有所收獲,下面我們一起來看看這篇“C語言關鍵字及變量怎么定義與聲明”文章吧。

    關鍵字分類

    一般的書上,C語言的關鍵字都是32個,但是這個都是 C90(C89) 的標準。其實 C99 后又新增了5個關鍵字。不過,目前主流的編譯器,對 C99 支持的并不好,按照C90標準 ,即認為32個。

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

    補充內容

    第一個C程序

    #include<stdio.h>
    #include<windows.h>//windows.h系統(tǒng)頭文件,僅僅是為了停屏
    int main()
    {
    	printf("hello world!\n");
    	system("pause");//pause停屏
    	return 0;
    }

    文件代碼在進行生成解決方案后會轉換成可執(zhí)行程序(二進制文件 .exe)

    C語言關鍵字及變量怎么定義與聲明

    可以通過清空解決方案來清空可執(zhí)行程序

    C語言關鍵字及變量怎么定義與聲明

    • 在windows中,雙擊的本質運行程序,將程序加載到內存中。

    • 任何程序在被被運行之前都必須被加載到內存當中。

    • 加載到內存中,速度快。

    馮諾依曼

    C語言關鍵字及變量怎么定義與聲明

    定義與聲明

    變量

    在內存中開辟特定大小的空間,用來保存數據

    變量的定義

    類型  變量名 = 默認值
    int a = 10;
    char c = 'c';

    定義變量的原因:因為有數據需要暫時被保存起來,等待后續(xù)處理。

    變量的本質

    • 所有的變量的本質都是要在內存的某個位置開辟空間的。

    • 程序運行,需要加載到內存中

    • 程序計算,需要使用變量

    定義變量的本質:在內存中開辟一塊空間,用來保存數據。(為何一定是內存:因為定義變量,也是程序邏輯的一部分,程序已經被加載到內存)

    定義:開辟空間,只能有一次。

    聲明:告知,可以多次。

    int a = 10;//a的定義
    a = 20;//賦值
    a = 100;//賦值
    變量的分類

    變量分為:局部變量和全局變量

    局部變量:包含在代碼塊中的變量叫做局部變量。局部變量具有臨時性。進入代碼塊,自動形成局部變量,退出代碼塊自動釋放。[網上很多說函數中的變量是局部變量,不能說錯,但說法是不準確的](定義在代碼塊內)

    全局變量:在所有函數外定義的變量,叫做全局變量。全局變量具有全局性。(定義在代碼塊外)
    代碼塊:用{}括起來的區(qū)域,就叫做代碼塊

    #include<stdio.h>
    int g_val = 100;//全局變量
    int main()
    {
    	int a = 10;//局部變量,main函數也是函數,也有代碼塊{}
    	if(a == 10)
    	{
    		int b = 10;//局部變量
        }
    	printf("a=%d\n", a);
    	return 0;
    }
    變量的作用域

    作用域:指的是該變量的可以被正常訪問的代碼區(qū)域。
    局部變量:只在本代碼塊內有效。
    全局變量:整個程序運行期間,都有效。

    其中全局變量:

    • 在任何代碼塊中都可以被訪問

    • 在任何代碼塊中都可以被訪問,甚至被修改。

    • 當全局變量與局部變量同名時,局部變量優(yōu)先。

    #include<stdio.h>
    int g_vax = 10;//全局變量
    void test()
    {
    	int g_val = 100;//局部變量的g_val只能在本代碼被訪問
    	printf("%d\n", g_val);//在全局變量g_val任何代碼塊中都可以被訪問,甚至被修改
    	//輸出的是局部,也就是局部和全部同名的時候,優(yōu)先局部。
    }
    int main()
    {
    	test();
    	printf("%d\n", g_vax);//在任何代碼塊中都可以被訪問
    	return 0;
    }

    C語言關鍵字及變量怎么定義與聲明

    變量的生命周期

    生命周期概念:指的是該變量從定義到被釋放的時間范圍,所謂的釋放,指的是曾經開辟的空間”被釋放“。
    局部變量: 進入代碼塊,形成局部變量[開辟空間],退出代碼塊,"釋放"局部變量。
    全局變量: 定義完成之后,程序運行的整個生命周期內,該變量一直都有效。

    作用域 vs 生命周期

    作用域:衡量變量影響的范圍,該變量的有效作用域。
    生命周期:描述的是變量生存時間的長短。時間的概念:什么時候被開辟,什么時候被釋放。

    C語言關鍵字及變量怎么定義與聲明

    最寬宏大量的關鍵字 - auto

    如何使用:一般在代碼塊中定義的變量,即局部變量,默認都是auto修飾的,不過一般省略。
    默認的所有變量都是auto嗎?不是,一般用來修飾局部變量
    局部變量包括自動變量,臨時變量和局部變量。

    #include <stdio.h>
    int main()
    {
    	for (int i = 0; i < 10; i++) //局部變量i也可以被auto修飾
    	{
    		printf("i=%d\n", i);
    		if (1)
    		{
    			auto int j = 0;//自動變量
    			printf("before: j=%d\n", j);
    			j += 1;
    			printf("after : j=%d\n", j);
    		}
    	}
    	return 0;
    }

    C語言關鍵字及變量怎么定義與聲明

    auto已經很老,基本上不使用了。

    最快的關鍵字 - register

    CPU主要是負責進行計算的硬件單元,但是為了方便運算,一般第一步需要先把數據從內存讀取到CPU內,那么也就需要CPU具有一定的數據臨時存儲能力。注意:CPU并不是當前要計算了,才把特定數據讀到CPU里面,那樣太慢了。
    所以現代CPU內,都集成了一組叫做寄存器的硬件,用來做臨時數據的保存。

    存儲金字塔

    C語言關鍵字及變量怎么定義與聲明

    距離CPU越近的存儲硬件,速度越快。

    寄存器的認識

    CPU內集成了一組存儲硬件即可,這組硬件叫做寄存器。

    寄存器存在的本質

    在硬件層面上,提高計算機的運算效率。因為不需要從內存里讀取數據啦。

    register 修飾變量

    盡量將所修飾變量,放入CPU寄存區(qū)中,從而達到提高效率的目的
    那么什么樣的變量,可以采用register呢?
    1.局部的(全局會導致CPU寄存器被長時間占用)
    2.不會被寫入的(寫入就需要寫回內存,后續(xù)還要讀取檢測的話,就無意義了)
    3.高頻被讀取的(提高效率所在)
    4.如果要使用,請不要大量使用,因為寄存器數量有限
    5.register修飾的變量,不能取地址(因為已經放在寄存區(qū)中了嘛,地址是內存相關的概念)

    寄存器&ndash;cache&ndash;內存&ndash;SSD/flash/硬盤&ndash;光盤&ndash;磁盤

    硬盤通過緩存技術成內存,內存通過緩存技術成寄存器。

    距離CPU越近的儲存單元,效率越高,單價成本越高。

    距離CPU越遠的儲存單元,效率越低,單價成本越便宜。

    對任何一種硬件而言,充當上游硬件的緩存。

    例:內存可以看成硬盤的一個大緩存;cache和寄存器相當于內存某一種緩存。

    CPU訪問數據的時,以最小的成本達到最高的效率。

    #include<stdio.h>
    int main()
    {
    	register int a = 10;
    	printf("%p\n", &a);
    	return 0;
    }

    C語言關鍵字及變量怎么定義與聲明

    以上就是關于“C語言關鍵字及變量怎么定義與聲明”這篇文章的內容,相信大家都有了一定的了解,希望小編分享的內容對大家有幫助,若想了解更多相關的知識內容,請關注億速云行業(yè)資訊頻道。

    向AI問一下細節(jié)

    免責聲明:本站發(fā)布的內容(圖片、視頻和文字)以原創(chuàng)、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

    AI