最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

C語(yǔ)言深度解剖篇之關(guān)鍵字以及補(bǔ)充內(nèi)容

 更新時(shí)間:2022年06月26日 12:31:58   作者:沐曦希  
C語(yǔ)言的關(guān)鍵字共有32個(gè),根據(jù)關(guān)鍵字的作用,可分其為數(shù)據(jù)類(lèi)型關(guān)鍵字、控制語(yǔ)句關(guān)鍵字、存儲(chǔ)類(lèi)型關(guān)鍵字和其它關(guān)鍵字四類(lèi),這篇文章主要給大家介紹了關(guān)于C語(yǔ)言深度解剖篇之關(guān)鍵字以及補(bǔ)充內(nèi)容的相關(guān)資料,需要的朋友可以參考下

關(guān)鍵字分類(lèi)

一般的書(shū)上,C語(yǔ)言的關(guān)鍵字都是32個(gè),但是這個(gè)都是 C90(C89) 的標(biāo)準(zhǔn)。其實(shí) C99 后又新增了5個(gè)關(guān)鍵字。不過(guò),目前主流的編譯器,對(duì) C99 支持的并不好,按照C90標(biāo)準(zhǔn) ,即認(rèn)為32個(gè)。

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

補(bǔ)充內(nèi)容

第一個(gè)C程序

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

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

可以通過(guò)清空解決方案來(lái)清空可執(zhí)行程序

  • 在windows中,雙擊的本質(zhì)運(yùn)行程序,將程序加載到內(nèi)存中。
  • 任何程序在被被運(yùn)行之前都必須被加載到內(nèi)存當(dāng)中。
  • 加載到內(nèi)存中,速度快。

馮諾依曼

定義與聲明

變量

在內(nèi)存中開(kāi)辟特定大小的空間,用來(lái)保存數(shù)據(jù)

變量的定義

類(lèi)型  變量名 = 默認(rèn)值
int a = 10;
char c = 'c';

定義變量的原因:因?yàn)橛袛?shù)據(jù)需要暫時(shí)被保存起來(lái),等待后續(xù)處理。

變量的本質(zhì)

  • 所有的變量的本質(zhì)都是要在內(nèi)存的某個(gè)位置開(kāi)辟空間的。
  • 程序運(yùn)行,需要加載到內(nèi)存中
  • 程序計(jì)算,需要使用變量

定義變量的本質(zhì):在內(nèi)存中開(kāi)辟一塊空間,用來(lái)保存數(shù)據(jù)。(為何一定是內(nèi)存:因?yàn)槎x變量,也是程序邏輯的一部分,程序已經(jīng)被加載到內(nèi)存)

定義:開(kāi)辟空間,只能有一次。

聲明:告知,可以多次。

int a = 10;//a的定義
a = 20;//賦值
a = 100;//賦值

變量的分類(lèi)

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

局部變量:包含在代碼塊中的變量叫做局部變量。局部變量具有臨時(shí)性。進(jìn)入代碼塊,自動(dòng)形成局部變量,退出代碼塊自動(dòng)釋放。[網(wǎng)上很多說(shuō)函數(shù)中的變量是局部變量,不能說(shuō)錯(cuò),但說(shuō)法是不準(zhǔn)確的](定義在代碼塊內(nèi))

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

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

變量的作用域

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

其中全局變量:

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

變量的生命周期

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

作用域 vs 生命周期

作用域:衡量變量影響的范圍,該變量的有效作用域。
生命周期:描述的是變量生存時(shí)間的長(zhǎng)短。時(shí)間的概念:什么時(shí)候被開(kāi)辟,什么時(shí)候被釋放。

最寬宏大量的關(guān)鍵字 - auto

如何使用:一般在代碼塊中定義的變量,即局部變量,默認(rèn)都是auto修飾的,不過(guò)一般省略。
默認(rèn)的所有變量都是auto嗎?不是,一般用來(lái)修飾局部變量
局部變量包括自動(dòng)變量,臨時(shí)變量和局部變量。

#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;//自動(dòng)變量
			printf("before: j=%d\n", j);
			j += 1;
			printf("after : j=%d\n", j);
		}
	}
	return 0;
}

auto已經(jīng)很老,基本上不使用了。

最快的關(guān)鍵字 - register

CPU主要是負(fù)責(zé)進(jìn)行計(jì)算的硬件單元,但是為了方便運(yùn)算,一般第一步需要先把數(shù)據(jù)從內(nèi)存讀取到CPU內(nèi),那么也就需要CPU具有一定的數(shù)據(jù)臨時(shí)存儲(chǔ)能力。注意:CPU并不是當(dāng)前要計(jì)算了,才把特定數(shù)據(jù)讀到CPU里面,那樣太慢了。
所以現(xiàn)代CPU內(nèi),都集成了一組叫做寄存器的硬件,用來(lái)做臨時(shí)數(shù)據(jù)的保存。

存儲(chǔ)金字塔

距離CPU越近的存儲(chǔ)硬件,速度越快。

寄存器的認(rèn)識(shí)

CPU內(nèi)集成了一組存儲(chǔ)硬件即可,這組硬件叫做寄存器。

寄存器存在的本質(zhì)

在硬件層面上,提高計(jì)算機(jī)的運(yùn)算效率。因?yàn)椴恍枰獜膬?nèi)存里讀取數(shù)據(jù)啦。

register 修飾變量

盡量將所修飾變量,放入CPU寄存區(qū)中,從而達(dá)到提高效率的目的
那么什么樣的變量,可以采用register呢?
1.局部的(全局會(huì)導(dǎo)致CPU寄存器被長(zhǎng)時(shí)間占用)
2.不會(huì)被寫(xiě)入的(寫(xiě)入就需要寫(xiě)回內(nèi)存,后續(xù)還要讀取檢測(cè)的話(huà),就無(wú)意義了)
3.高頻被讀取的(提高效率所在)
4.如果要使用,請(qǐng)不要大量使用,因?yàn)榧拇嫫鲾?shù)量有限
5.register修飾的變量,不能取地址(因?yàn)橐呀?jīng)放在寄存區(qū)中了嘛,地址是內(nèi)存相關(guān)的概念)

寄存器–cache–內(nèi)存–SSD/flash/硬盤(pán)–光盤(pán)–磁盤(pán)

硬盤(pán)通過(guò)緩存技術(shù)成內(nèi)存,內(nèi)存通過(guò)緩存技術(shù)成寄存器。

距離CPU越近的儲(chǔ)存單元,效率越高,單價(jià)成本越高。

距離CPU越遠(yuǎn)的儲(chǔ)存單元,效率越低,單價(jià)成本越便宜。

對(duì)任何一種硬件而言,充當(dāng)上游硬件的緩存。

例:內(nèi)存可以看成硬盤(pán)的一個(gè)大緩存;cache和寄存器相當(dāng)于內(nèi)存某一種緩存。

CPU訪(fǎng)問(wèn)數(shù)據(jù)的時(shí),以最小的成本達(dá)到最高的效率。

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

寫(xiě)在最后

到此這篇關(guān)于C語(yǔ)言深度解剖篇之關(guān)鍵字以及補(bǔ)充內(nèi)容的文章就介紹到這了,更多相關(guān)C語(yǔ)言關(guān)鍵字及補(bǔ)充內(nèi)容內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • C++數(shù)據(jù)結(jié)構(gòu)之搜索二叉樹(shù)的實(shí)現(xiàn)

    C++數(shù)據(jù)結(jié)構(gòu)之搜索二叉樹(shù)的實(shí)現(xiàn)

    了解搜索二叉樹(shù)是為了STL中的map和set做鋪墊,我們所熟知的AVL樹(shù)和平衡搜索二叉樹(shù)也需要搜索二叉樹(shù)的基礎(chǔ)。本文將詳解如何利用C++實(shí)現(xiàn)搜索二叉樹(shù),需要的可以參考一下
    2022-05-05
  • C語(yǔ)言報(bào)錯(cuò):Null Pointer Dereference的解決方案

    C語(yǔ)言報(bào)錯(cuò):Null Pointer Dereference的解決方案

    Null Pointer Dereference(空指針解引用)是C語(yǔ)言中常見(jiàn)且危險(xiǎn)的內(nèi)存管理錯(cuò)誤,它通常在程序試圖訪(fǎng)問(wèn)通過(guò)空指針(NULL pointer)引用的內(nèi)存地址時(shí)發(fā)生,本文將詳細(xì)介紹Null Pointer Dereference的產(chǎn)生原因,提供多種解決方案,需要的朋友可以參考下
    2024-06-06
  • C語(yǔ)言?程序的編譯系統(tǒng)解析

    C語(yǔ)言?程序的編譯系統(tǒng)解析

    編譯程序的基本功能是把源程序(高級(jí)語(yǔ)言)翻譯成目標(biāo)程序。但是,作為一個(gè)具有實(shí)際應(yīng)用價(jià)值的編譯系統(tǒng),除了基本功能之外,還應(yīng)具備語(yǔ)法檢查、調(diào)試措施、修改手段、覆蓋處理、目標(biāo)程序優(yōu)化、不同語(yǔ)言合用以及人-機(jī)聯(lián)系等重要功能
    2022-02-02
  • C語(yǔ)言字母轉(zhuǎn)換大小寫(xiě)的3種方法圖文詳解

    C語(yǔ)言字母轉(zhuǎn)換大小寫(xiě)的3種方法圖文詳解

    我們?cè)贑語(yǔ)言入門(mén)的時(shí)候都會(huì)遇到要求寫(xiě)大小寫(xiě)轉(zhuǎn)換的題目,所以下面這篇文章主要給大家介紹了關(guān)于C語(yǔ)言字母轉(zhuǎn)換大小寫(xiě)的3種方法,文中給了詳細(xì)的代碼示例,需要的朋友可以參考下
    2023-10-10
  • c++截取漢字和英文混合字符串代碼實(shí)例

    c++截取漢字和英文混合字符串代碼實(shí)例

    這篇文章主要介紹了c++截取漢字英文混合字符串,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2019-04-04
  • C++編程產(chǎn)生指定范圍內(nèi)的隨機(jī)數(shù)

    C++編程產(chǎn)生指定范圍內(nèi)的隨機(jī)數(shù)

    這篇文章主要為大家詳細(xì)介紹了C++編程產(chǎn)生指定范圍內(nèi)的隨機(jī)數(shù),文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2019-09-09
  • 一文帶你了解Qt中槽的使用

    一文帶你了解Qt中槽的使用

    這篇文章主要為大家詳細(xì)介紹了Qt中槽的使用教程,文中的示例代碼講解詳細(xì),對(duì)我們學(xué)習(xí)Qt有一定的幫助,感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下
    2022-12-12
  • opencv?C++模板匹配的簡(jiǎn)單實(shí)現(xiàn)

    opencv?C++模板匹配的簡(jiǎn)單實(shí)現(xiàn)

    這篇文章主要介紹了opencv?C++模板匹配的簡(jiǎn)單實(shí)現(xiàn),本文通過(guò)實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2022-02-02
  • C++ 內(nèi)存管理原理分析

    C++ 內(nèi)存管理原理分析

    本章主要介紹C++的內(nèi)存管理,以C++的內(nèi)存分布作為引入,介紹C++不同于C語(yǔ)言的內(nèi)存管理方式(new delete對(duì)比 malloc free),最后為了加深讀者的理解,會(huì)介紹new和delete的底層實(shí)現(xiàn)原理
    2021-11-11
  • c語(yǔ)言之如何求e的近似值

    c語(yǔ)言之如何求e的近似值

    這篇文章主要介紹了c語(yǔ)言之如何求e的近似值問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-12-12

最新評(píng)論

龙陵县| 湟源县| 慈溪市| 太白县| 新疆| 长乐市| 孝昌县| 施甸县| 灵武市| 栾城县| 米泉市| 洛南县| 根河市| 仁寿县| 义马市| 涡阳县| 昌江| 宁乡县| 闽清县| 萨嘎县| 晋中市| 廉江市| 定襄县| 漯河市| 萝北县| 灵川县| 叶城县| 金华市| 绵竹市| 唐海县| 古蔺县| 陇西县| 潍坊市| 海阳市| 仲巴县| 澎湖县| 宾阳县| 华阴市| 隆德县| 无锡市| 岱山县|