您好,登錄后才能下訂單哦!
這篇“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)條件 |
#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中,雙擊的本質運行程序,將程序加載到內存中。
任何程序在被被運行之前都必須被加載到內存當中。
加載到內存中,速度快。
馮諾依曼
在內存中開辟特定大小的空間,用來保存數據
變量的定義
類型 變量名 = 默認值 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; }
生命周期概念:指的是該變量從定義到被釋放的時間范圍,所謂的釋放,指的是曾經開辟的空間”被釋放“。
局部變量: 進入代碼塊,形成局部變量[開辟空間],退出代碼塊,"釋放"局部變量。
全局變量: 定義完成之后,程序運行的整個生命周期內,該變量一直都有效。
作用域:衡量變量影響的范圍,該變量的有效作用域。
生命周期:描述的是變量生存時間的長短。時間的概念:什么時候被開辟,什么時候被釋放。
如何使用:一般在代碼塊中定義的變量,即局部變量,默認都是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已經很老,基本上不使用了。
CPU主要是負責進行計算的硬件單元,但是為了方便運算,一般第一步需要先把數據從內存讀取到CPU內,那么也就需要CPU具有一定的數據臨時存儲能力。注意:CPU并不是當前要計算了,才把特定數據讀到CPU里面,那樣太慢了。
所以現代CPU內,都集成了一組叫做寄存器的硬件,用來做臨時數據的保存。
距離CPU越近的存儲硬件,速度越快。
CPU內集成了一組存儲硬件即可,這組硬件叫做寄存器。
在硬件層面上,提高計算機的運算效率。因為不需要從內存里讀取數據啦。
盡量將所修飾變量,放入CPU寄存區(qū)中,從而達到提高效率的目的
那么什么樣的變量,可以采用register呢?
1.局部的(全局會導致CPU寄存器被長時間占用)
2.不會被寫入的(寫入就需要寫回內存,后續(xù)還要讀取檢測的話,就無意義了)
3.高頻被讀取的(提高效率所在)
4.如果要使用,請不要大量使用,因為寄存器數量有限
5.register修飾的變量,不能取地址(因為已經放在寄存區(qū)中了嘛,地址是內存相關的概念)
寄存器–cache–內存–SSD/flash/硬盤–光盤–磁盤
硬盤通過緩存技術成內存,內存通過緩存技術成寄存器。
距離CPU越近的儲存單元,效率越高,單價成本越高。
距離CPU越遠的儲存單元,效率越低,單價成本越便宜。
對任何一種硬件而言,充當上游硬件的緩存。
例:內存可以看成硬盤的一個大緩存;cache和寄存器相當于內存某一種緩存。
CPU訪問數據的時,以最小的成本達到最高的效率。
#include<stdio.h> int main() { register int a = 10; printf("%p\n", &a); return 0; }
以上就是關于“C語言關鍵字及變量怎么定義與聲明”這篇文章的內容,相信大家都有了一定的了解,希望小編分享的內容對大家有幫助,若想了解更多相關的知識內容,請關注億速云行業(yè)資訊頻道。
免責聲明:本站發(fā)布的內容(圖片、視頻和文字)以原創(chuàng)、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。