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

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

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

關(guān)鍵字分類

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

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

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

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

馮諾依曼

定義與聲明

變量

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

變量的定義

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

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

變量的本質(zhì)

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

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

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

聲明:告知,可以多次。

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

變量的分類

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

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

全局變量:在所有函數(shù)外定義的變量,叫做全局變量。全局變量具有全局性。(定義在代碼塊外)
代碼塊:用{}括起來的區(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;
}

變量的作用域

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

其中全局變量:

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

變量的生命周期

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

作用域 vs 生命周期

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

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

如何使用:一般在代碼塊中定義的變量,即局部變量,默認(rèn)都是auto修飾的,不過一般省略。
默認(rèn)的所有變量都是auto嗎?不是,一般用來修飾局部變量
局部變量包括自動變量,臨時(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;//自動變量
			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í)存儲能力。注意:CPU并不是當(dāng)前要計(jì)算了,才把特定數(shù)據(jù)讀到CPU里面,那樣太慢了。
所以現(xiàn)代CPU內(nèi),都集成了一組叫做寄存器的硬件,用來做臨時(shí)數(shù)據(jù)的保存。

存儲金字塔

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

寄存器的認(rèn)識

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

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

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

register 修飾變量

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

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

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

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

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

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

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

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

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

寫在最后

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

相關(guān)文章

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

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

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

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

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

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

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

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

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

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

    這篇文章主要介紹了c++截取漢字英文混合字符串,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(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ì),對我們學(xué)習(xí)Qt有一定的幫助,感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下
    2022-12-12
  • opencv?C++模板匹配的簡單實(shí)現(xiàn)

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

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

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

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

    c語言之如何求e的近似值

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

最新評論

靖州| 南郑县| 沁水县| 汾西县| 汤原县| 南华县| 延寿县| 闽清县| 建始县| 屯门区| 秦皇岛市| 台山市| 定西市| 晋州市| 綦江县| 百色市| 余姚市| 济宁市| 宜州市| 灵寿县| 高台县| 焉耆| 邯郸市| 阳泉市| 霸州市| 拉孜县| 苏尼特左旗| 巫山县| 潼关县| 那曲县| 淳化县| 昭通市| 泸西县| 怀安县| 东乌| 石家庄市| 临夏县| 饶河县| 平凉市| 石首市| 宣城市|