網(wǎng)站首頁(yè) 編程語(yǔ)言 正文
1、關(guān)鍵字
關(guān)鍵字是C語(yǔ)言提供的,不能自己創(chuàng)建關(guān)鍵字;
關(guān)鍵字不能用作變量名,eg:int char;這樣的寫(xiě)法是不可取的。
2、常見(jiàn)關(guān)鍵字
auto break case char const continue default do double else enum extern float for goto if int long register return short signed sizeof static struct switch typedef union unisigned void volatile while以上列舉的均為常見(jiàn)關(guān)鍵字。
(1)auto是自動(dòng)的,每個(gè)局部變量都是auto修飾的,如:在結(jié)構(gòu)體中有寫(xiě)
{ int a =10; }
這其實(shí)是自動(dòng)創(chuàng)建、自動(dòng)銷(xiāo)毀的,屬于自動(dòng)變量,它前面省略了auto,其實(shí)是auto int a =10;
(2)extern:用來(lái)聲明外部變量
(3)register:寄存器關(guān)鍵字
int main() { register int num = 100;//指的是建議num的值放在寄存器中 return 0; }
在計(jì)算機(jī)中,數(shù)據(jù)打給可以存放在“寄存器”、“高速緩存”、“內(nèi)存”、“硬盤(pán)”、“網(wǎng)盤(pán)”這幾個(gè)地方。
從下往上,造價(jià)越來(lái)越高,空間越來(lái)越小,但讀寫(xiě)速度越來(lái)越快。
將“大量”或者“頻繁”被使用的數(shù)據(jù),放在寄存器里面,可以提升效率。
(4)signed:有符號(hào)的 unsigned:無(wú)符號(hào)的
(5)static:靜態(tài)的
在語(yǔ)言中,static是用來(lái)修飾變量和函數(shù)的。
- 修飾局部變量----靜態(tài)局部變量,改變了局部變量的生命周期(本質(zhì)上是改變了變量的存儲(chǔ)類(lèi)型)
- 修飾全局變量—靜態(tài)全局變量
- 修飾函數(shù)—靜態(tài)函數(shù)
1>static修飾局部變量
聲明test函數(shù)
void test()//聲明test函數(shù) { int a = 1; a++; printf("%d",a); return 0; } int main() { int i = 0; while (i < 10) { test(); i++; } return 0; }
運(yùn)行結(jié)果為:2222222222
若將test函數(shù)中的int a=1;
改為static int a =1;
,則運(yùn)行結(jié)果為
234567891011
補(bǔ)充:
內(nèi)存可以劃分為“棧區(qū)”(存放局部變量)、“堆區(qū)”(動(dòng)態(tài)內(nèi)存分配)以及“靜態(tài)區(qū)”(存放全局變量以及ststic修飾的靜態(tài)變量)。所以在該例子中,a由棧區(qū)到靜態(tài)區(qū),它的存儲(chǔ)類(lèi)型改變了,進(jìn)一步致使生命周期改變。程序不結(jié)束,全局變量和static修飾的靜態(tài)變量不銷(xiāo)毀。
2>static修飾全局變量
全局變量在整個(gè)工程中都可以使用,但是被static修飾之后就不能在整個(gè)工程中使用了,若在一個(gè)源文件里面寫(xiě)static int g_val=2022;
,在另外一個(gè)源文件里面寫(xiě):
點(diǎn)擊運(yùn)行之后會(huì)報(bào)錯(cuò),顯示無(wú)法解析的外部符號(hào)g_val
static修飾全局變量會(huì)使得這個(gè)全局變量只能在自己所在的.c源文件里面使用,其它源文件不能使用。
全局變量在其它源文件內(nèi)部可以使用,是因?yàn)槿肿兞烤哂型獠挎溄訉傩裕潜籹tatic修飾之后,就變成了內(nèi)部鏈接屬性,其它源文件就不能鏈接到這個(gè)靜態(tài)的全局變量了。
3>static修飾函數(shù)
在一個(gè)源文件里面寫(xiě)
int Add(int x, int y) { return x + y; }
在另外一個(gè)源文件里面寫(xiě)
extern int Add(int x,int y) int main() { int a = 10; int b = 20; int sum = Add(a,b); printf("sum=%d\n",sum); return 0; }
這樣是可以執(zhí)行的,但是將int Add(int x, int y)
改為static int Add(int x, int y)
就會(huì)報(bào)錯(cuò),顯示無(wú)法解析的外部符號(hào)。
static修飾函數(shù)使得函數(shù)只能在自己所在的源文件內(nèi)部使用,不能在其它源文件里面使用,本質(zhì)上是static將函數(shù)的外部鏈接屬性變成了內(nèi)部鏈接屬性,和static修飾全局變量一樣。
(6)struct:結(jié)構(gòu)體關(guān)鍵字
(7)typedef:類(lèi)型重定義
下面的代碼是說(shuō)要定義一個(gè)無(wú)符號(hào)的整數(shù),但是這樣寫(xiě)有點(diǎn)麻煩,于是就用到了typedef關(guān)鍵字。
int main() { unsigned int num = 100; return 0; }
利用typedef關(guān)鍵字進(jìn)行類(lèi)型重定義:
typedef unsigned int u_int; //意思是將unsigned int重新命名為u_int,在之后的代碼里面,u_int就代表無(wú)符號(hào)整型 int main() { u_int num1 = 100; return 0; }
(8)union:聯(lián)合體(共用體)
(9)void:無(wú),空
(10)volatile
問(wèn):define與include是否為關(guān)鍵字?
答:它們均不是關(guān)鍵字,它們是預(yù)處理指令。
原文鏈接:https://blog.csdn.net/qq_42822743/article/details/125071822
相關(guān)推薦
- 2023-03-15 手把手教你用Python中的Linting提高代碼質(zhì)量_python
- 2022-01-04 變量提升,函數(shù)提升及其優(yōu)先級(jí)關(guān)系
- 2023-03-27 使用seaborn繪制強(qiáng)化學(xué)習(xí)中的圖片問(wèn)題_python
- 2022-08-17 R語(yǔ)言繪制corrplot相關(guān)熱圖分析美化示例及詳細(xì)圖解_R語(yǔ)言
- 2023-05-03 深入了解一下C語(yǔ)言中的柔性數(shù)組_C 語(yǔ)言
- 2022-12-12 python中的線(xiàn)程池threadpool_python
- 2022-08-01 C++簡(jiǎn)單又輕松建立鏈?zhǔn)蕉鏄?shù)流程_C 語(yǔ)言
- 2022-08-06 C語(yǔ)言結(jié)構(gòu)體數(shù)組常用的三種賦值方法(包含字符串)_C 語(yǔ)言
- 最近更新
-
- window11 系統(tǒng)安裝 yarn
- 超詳細(xì)win安裝深度學(xué)習(xí)環(huán)境2025年最新版(
- Linux 中運(yùn)行的top命令 怎么退出?
- MySQL 中decimal 的用法? 存儲(chǔ)小
- get 、set 、toString 方法的使
- @Resource和 @Autowired注解
- Java基礎(chǔ)操作-- 運(yùn)算符,流程控制 Flo
- 1. Int 和Integer 的區(qū)別,Jav
- spring @retryable不生效的一種
- Spring Security之認(rèn)證信息的處理
- Spring Security之認(rèn)證過(guò)濾器
- Spring Security概述快速入門(mén)
- Spring Security之配置體系
- 【SpringBoot】SpringCache
- Spring Security之基于方法配置權(quán)
- redisson分布式鎖中waittime的設(shè)
- maven:解決release錯(cuò)誤:Artif
- restTemplate使用總結(jié)
- Spring Security之安全異常處理
- MybatisPlus優(yōu)雅實(shí)現(xiàn)加密?
- Spring ioc容器與Bean的生命周期。
- 【探索SpringCloud】服務(wù)發(fā)現(xiàn)-Nac
- Spring Security之基于HttpR
- Redis 底層數(shù)據(jù)結(jié)構(gòu)-簡(jiǎn)單動(dòng)態(tài)字符串(SD
- arthas操作spring被代理目標(biāo)對(duì)象命令
- Spring中的單例模式應(yīng)用詳解
- 聊聊消息隊(duì)列,發(fā)送消息的4種方式
- bootspring第三方資源配置管理
- GIT同步修改后的遠(yuǎn)程分支