亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

C語言深度解剖篇之關鍵字以及補充內容

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

關鍵字分類

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

關鍵字說明
auto聲明自動變量
short聲明短整型變量或函數(shù)
int聲明整型變量或函數(shù)
long聲明長整型變量或函數(shù)
float聲明浮點型變量或函數(shù)
double聲明雙精度變量或函數(shù)
char聲明字符型變量或函數(shù)
struct聲明結構體變量或函數(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用于開關語句
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計算數(shù)據(jù)類型長度
return子程序返回語句(可以帶參數(shù),也可不帶參數(shù))循環(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)

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

  • 在windows中,雙擊的本質運行程序,將程序加載到內存中。
  • 任何程序在被被運行之前都必須被加載到內存當中。
  • 加載到內存中,速度快。

馮諾依曼

定義與聲明

變量

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

變量的定義

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

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

變量的本質

  • 所有的變量的本質都是要在內存的某個位置開辟空間的。
  • 程序運行,需要加載到內存中
  • 程序計算,需要使用變量

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

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

聲明:告知,可以多次。

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

變量的分類

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

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

全局變量:在所有函數(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ū)域。
局部變量:只在本代碼塊內有效。
全局變量:整個程序運行期間,都有效。

其中全局變量:

  • 在任何代碼塊中都可以被訪問
  • 在任何代碼塊中都可以被訪問,甚至被修改。
  • 當全局變量與局部變量同名時,局部變量優(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;
}

變量的生命周期

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

作用域 vs 生命周期

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

最寬宏大量的關鍵字 - 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;
}

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

最快的關鍵字 - register

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

存儲金字塔

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

寄存器的認識

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

寄存器存在的本質

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

register 修飾變量

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

寄存器–cache–內存–SSD/flash/硬盤–光盤–磁盤

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

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

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

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

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

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

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

寫在最后

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

相關文章

  • 深度探究C++中的函數(shù)重載的用法

    深度探究C++中的函數(shù)重載的用法

    這篇文章主要介紹了C++中的函數(shù)重載用法,包括重載時參數(shù)類型的差異以及匹配和轉換等方面問題的講解,需要的朋友可以參考下
    2016-01-01
  • Visual Studio 2019 Professional 激活方法詳解

    Visual Studio 2019 Professional 激活方法詳解

    這篇文章主要介紹了Visual Studio 2019 Professional 激活方法,本文通過實例代碼給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2020-05-05
  • 指針與const限定符的使用分析

    指針與const限定符的使用分析

    本篇文章對指針與const限定符的使用進行了分析介紹。需要的朋友參考下
    2013-05-05
  • C語言中二級指針的實例詳解

    C語言中二級指針的實例詳解

    這篇文章主要介紹了C語言中二級指針的實例詳解的相關資料,希望通過本文能幫助到大家,讓大家掌握理解二級指針的知識,需要的朋友可以參考下
    2017-10-10
  • 使用C語言繪制統(tǒng)計圖中的餅圖

    使用C語言繪制統(tǒng)計圖中的餅圖

    常用的統(tǒng)計圖有條形圖、柱形圖、折線圖、曲線圖、餅圖、環(huán)形圖、扇形圖,本文主要為大家詳細介紹了如何使用使用C語言繪制統(tǒng)計圖中的餅圖,希望對大家有所幫助
    2024-02-02
  • java 出現(xiàn)NullPointerException的原因及解決辦法

    java 出現(xiàn)NullPointerException的原因及解決辦法

    這篇文章主要介紹了java 出現(xiàn)NullPointerException的原因及解決辦法的相關資料,這里說明出現(xiàn)NullPointerException 的原因的總結,并說明該如何解決,需要的朋友可以參考下
    2017-08-08
  • 簡要對比C語言中的truncate()函數(shù)與ftruncate()函數(shù)

    簡要對比C語言中的truncate()函數(shù)與ftruncate()函數(shù)

    這篇文章主要介紹了C語言中的truncate()函數(shù)與ftruncate()函數(shù)的簡要對比,注意其之間的區(qū)別,需要的朋友可以參考下
    2015-09-09
  • C++中的運算符重載詳解

    C++中的運算符重載詳解

    大家好,本篇文章主要講的是C++中的運算符重載詳解,感興趣的同學趕快來看一看吧,對你有幫助的話記得收藏一下
    2022-01-01
  • 一文讀懂C++中Protobuf

    一文讀懂C++中Protobuf

    Protocol Buffers 是一種輕便高效的結構化數(shù)據(jù)存儲格式,可以用于結構化數(shù)據(jù)串行化、或者說序列化,本文詳解了Protobuf的使用,具有一定的參考價值,感興趣的可以了解一下
    2023-05-05
  • C/C++?extern和static的使用詳解

    C/C++?extern和static的使用詳解

    這篇文章主要介紹了C/C++?extern和static的使用,在講到extern和static的時候先了解一下定義和聲明的基本概念,本文通過實例代碼給大家介紹的非常詳細,需要的朋友可以參考下
    2022-06-06

最新評論