目錄
- int,float,double,char
- short,long,signed,unsigned
- union,struct()
- enum
- auto
- static
- register
- extern
- for ,do ,while
- if,else, switch, case, default
- goto ,continue,break,return
- const,typedef,sizeof,volatile
前言
對(duì)于剛?cè)腴Tc語(yǔ)言的小白而言,了解C語(yǔ)言的關(guān)鍵字,包括其含義、用法,對(duì)分析和編寫C程序都有著極其重要的作用
一、關(guān)鍵字是什么?
關(guān)鍵字又稱為保留字,就是已被C語(yǔ)言本身使用,不能作其它用途使用的字,關(guān)鍵字不能用作變量名、函數(shù)名等
下面是小編總結(jié)的c語(yǔ)言常用的32個(gè)關(guān)鍵字
auto | break | case | char | const |
continue | default | do | double | else |
enum | extern | float | for | goto |
if | int | long | register | return |
short | signerd | sizeof | static | struct |
switch | typedeft | union | unsigned | void |
volatile | while |
二、關(guān)鍵字使用方法
1.關(guān)鍵字分類
- 數(shù)據(jù)類型關(guān)鍵字(12個(gè))
int | 整型變量或函數(shù) |
char | 字符型變量或函數(shù) |
float | 浮點(diǎn)型變量或函數(shù) |
double | 雙精度變量或函數(shù) |
enum | 枚舉類型 |
short | 短整型變量或函數(shù) |
long | 長(zhǎng)整型變量或函數(shù) |
signed | 有符號(hào)類型變量或函數(shù) |
unsigned | 無(wú)符號(hào)類型變量或函數(shù) |
struct | 結(jié)構(gòu)體變量或函數(shù) |
union | 聯(lián)合數(shù)據(jù)類型 |
void | 修飾函數(shù),說明函數(shù)無(wú)返回值 |
修飾指針,說明指針是不確定數(shù)據(jù)類型的指針 | |
函數(shù)無(wú)返回值或無(wú)參數(shù),無(wú)類型指針 |
- 存儲(chǔ)類型關(guān)鍵字(4個(gè))
auto | 聲明自動(dòng)變量 |
static | 聲明靜態(tài)變量 |
register | 聲明存儲(chǔ)器變量 |
extern |
聲明變量,在其他文件中聲明,亦引用變量 |
- 控制語(yǔ)句關(guān)鍵字(12個(gè))
跳轉(zhuǎn)結(jié)構(gòu) | goto | 無(wú)條件跳轉(zhuǎn)語(yǔ)句 |
continue | 結(jié)束當(dāng)前循環(huán),開始下一輪循環(huán) | |
break | 跳出當(dāng)前循環(huán)或switch結(jié)構(gòu) | |
return | 子程序返回語(yǔ)句,可帶或不帶參數(shù) | |
循環(huán)結(jié)構(gòu) | for | for循環(huán)結(jié)構(gòu) |
do | 循環(huán)語(yǔ)句的循環(huán)體 | |
while | 循環(huán)語(yǔ)句的循環(huán)條件 | |
分支結(jié)構(gòu) | if | 條件語(yǔ)句 |
else | 條件語(yǔ)句否定分支(與 if 連用) | |
switch | 用于開關(guān)語(yǔ)句 | |
case | 開關(guān)語(yǔ)句分支 | |
default | 開關(guān)語(yǔ)句中的“其他”分支,可選 |
- 其他關(guān)鍵字
const | 聲明只讀變量 |
sizeof | 計(jì)算對(duì)象所占內(nèi)存空間大小 |
typedef | 給數(shù)據(jù)類型取別名 |
volatile | 說明變量在程序執(zhí)行中可被隱含地改變 |
2.使用方法(詳解)
1.數(shù)據(jù)類型關(guān)鍵字
-
int,float,double,char
#define _CRT_SECURE_NO_WARNINGS 1 #include <stdio.h> int main() { int a = 1;//定義一個(gè)整型數(shù)a,并且初始化為1 float b = 2;//定義一個(gè)單精度浮點(diǎn)型數(shù)b,初始化為2 double c = 10;//定義一個(gè)雙精度浮點(diǎn)數(shù)c,初始化為10 char ch1 = 'x';//定義一個(gè)字符型數(shù)ch1,把字符x放入ch1中 printf("%d %f %lf %c\n", a, b, c,ch1); return 0; }
-
short,long,signed,unsigned
#include <stdio.h> int main() { long int a = 4;//定義長(zhǎng)整型數(shù)a,初始化為4 short int b = 7;//定義一個(gè)短整型數(shù)b,初始化為7 signed int d = 2;//定義一個(gè)有符號(hào)整型數(shù)d,初始化為2 unsigned int c = 8;//定義一個(gè)無(wú)符號(hào)整型數(shù)c,初始化為8 printf("%u", c); return 0; }
-
union,struct()
定義格式為
union 共用體名
{
成員列表
};
如:
#include <stdio.h> union book { float price; char name[40]; int id[20]; };//此共用體包含三個(gè)成員,分別是價(jià)格price,書名name,書籍序列號(hào)id
struct用法與union一樣,兩者不同的是結(jié)構(gòu)體的各個(gè)成員會(huì)占用不同的內(nèi)存,互相之間沒有影響;而共用體的所有成員占用同一段內(nèi)存,修改一個(gè)成員會(huì)影響其余所有成員
-
enum
定義格式為:
enum 枚舉名
{枚舉值名表};
如:
#include <stdio.h> enum {Jan,Fed,Mar,Apr,May,Jun,Jul,Aug,Sept,Oct,Nov,Dec}; //枚舉一年中的1到12月
2.存儲(chǔ)類型關(guān)鍵字
-
auto
#include <stdio.h> void sub(float a) { auto int i;//這個(gè)i被auto修飾,為局部變量,生命周期只在這個(gè)括號(hào)內(nèi) }
-
static
-
register
寄存器變量也是自動(dòng)變量,這種變量的值是保留在cpu的寄存器中,程序運(yùn)行時(shí),訪問存于寄存器內(nèi)的值要比訪問存于內(nèi)存中值要快得多,因此當(dāng)程序?qū)\(yùn)行速度較高時(shí),可把那些頻繁引用的少數(shù)變量指定為register變量以提高運(yùn)行速度
#include <stdio.h> int main() { int power(int a, register int n);//函數(shù)聲明 int s; s = power(5, 3); printf("%d\n", s); } int power(int x, register int n)//函數(shù)定義 { register int p; for (p = 1; n; n--) p = p * x; return p; }
-
extern
這個(gè)函數(shù)用代碼舉例可能沒有文字描述直觀,那小編就以字代碼和大家嘮嘮吧
在我們寫代碼時(shí),在一個(gè)project工程下,我們建立一個(gè)test-1.c文件和一個(gè)test-2.c文件,假如我們?cè)诘谝粋(gè)test-1.c文件中自定義了一個(gè)函數(shù),假使我們?cè)趖est-2.c文件中還需要用到這個(gè)函數(shù),我們就可以用auto+函數(shù)聲明,此時(shí)就可以調(diào)用外部函數(shù)啦
3.控制語(yǔ)句關(guān)鍵字
-
for ,do ,while
C語(yǔ)言 for 循環(huán)語(yǔ)句的一般格式如下:
for(表達(dá)式1; 表達(dá)式2; 表達(dá)式3)
循環(huán)體語(yǔ)句;
#include<stdio.h> int main() { int a = 0;//定義一個(gè)整型數(shù)并且初始化為0 for (a = 0; a <= 5; a++)//for循環(huán),a從0開始,到5結(jié)束,每次循環(huán)完a自增1 { printf("海綿寶寶");//循環(huán)一次打印一次海綿寶寶 } return 0; }
在C語(yǔ)言中do while一般連用構(gòu)成循環(huán)
do
{
語(yǔ)句;
}
while (表達(dá)式);
#include<stdio.h> int main() { int a = 5; do { a = a + 3; printf("%d\n", a); } while (a > 20); return 0; }
-
if,else, switch, case, default
一般情況下,else都是跟if連用的,所以我們放在一起
語(yǔ)法為:
if(表達(dá)式)
{語(yǔ)句}
if(表達(dá)式)
{語(yǔ)句}
else(表達(dá)式)
{語(yǔ)句}
if分支有單分支,雙分支,多分志的結(jié)構(gòu),在這里我就例舉一種情況來(lái)說明if else的用法
#include <stdio.h> int main() { int a = 0; scanf("%d", &a); if (a > 2 && a < 10)//如果a>2,并且a<10 { printf("我是大可愛"); } else//否則(即a不在2-10的范圍內(nèi)) { printf("我不可愛"); } return 0; }
case, switch, default一般情況下在一起用,這里小編也放在一起和大家講啦
switch 語(yǔ)句根據(jù)控制表達(dá)式的值,可以把程序流跳轉(zhuǎn)到多個(gè)語(yǔ)句中的一個(gè)執(zhí)行:括號(hào)里的表達(dá)式具有整數(shù)類型,并且這里的語(yǔ)句就是該 switch 主體,它包括了多個(gè) case 情況,以及最多一個(gè) default 。
括號(hào)里的表達(dá)式會(huì)被計(jì)算一次,并和 case 標(biāo)簽中的常量表達(dá)式做比較。如果表達(dá)式的值匹配其中的某個(gè) case 常量,程序流就會(huì)跳轉(zhuǎn)到該 case 標(biāo)簽后面的語(yǔ)句。如果沒有匹配的 case 常量,程序流就會(huì)跳轉(zhuǎn)到 default 標(biāo)簽后的語(yǔ)句(如果存在 default 標(biāo)簽)。
switch語(yǔ)句的一般表達(dá)形式
switch(表達(dá)式)
{
case 常量表達(dá)式1:語(yǔ)句1;
case 常量表達(dá)式2:語(yǔ)句2;
...
case 常量表達(dá)式n:語(yǔ)句n;
default:語(yǔ)句n+1;
}
#include<stdio.h> int main() { int g=100; switch (g / 10) { case 10:printf("perfect\n"); case 9: printf("A\n"); case 8: printf("B\n"); case 7: printf("C\n"); break;//如果case結(jié)束后不加break,程序就會(huì)繼續(xù)往下執(zhí)行 case 6: printf("D\n"); break; default: printf("over"); } return 0; }
在這里小編還要強(qiáng)調(diào)的是,初學(xué)C語(yǔ)言的小伙伴一定要深究加break與不加break的區(qū)別,只有弄清楚這個(gè),程序才能達(dá)到自己想要的結(jié)果哦
-
goto ,continue,break,return
goto語(yǔ)句成為無(wú)條件轉(zhuǎn)向語(yǔ)句,一般形式:
goto 語(yǔ)句標(biāo)號(hào);
比如說,我們需要從鍵盤輸入一組數(shù)據(jù),以零作為結(jié)束輸入數(shù)據(jù)標(biāo)志,求這組數(shù)據(jù)之和,這是我們可以借助goto來(lái)實(shí)現(xiàn)
#define _CRT_SECURE_NO_WARNINGS 1 #include <stdio.h> int main() { int number = 0; int sum = 0; loop:scanf("%d", &number);//loop是配合goto使用的,相當(dāng)于一個(gè)行標(biāo)號(hào) sum += number;//sum=sum+number if (number != 0) goto loop;//跳轉(zhuǎn)到loop標(biāo)記的那一行 printf("the total sum is%d\n", sum); return 0; }
前面我們講到,break用來(lái)跳轉(zhuǎn)出switch語(yǔ)句當(dāng) break 關(guān)鍵字用于 while for循環(huán)時(shí),會(huì)終止循環(huán)而執(zhí)行整個(gè)循環(huán)語(yǔ)句后面的代碼,滿足條件時(shí)便跳出循環(huán)。
continue 語(yǔ)句的作用是跳過循環(huán)體中剩余的語(yǔ)句而強(qiáng)制進(jìn)入下一次循環(huán)。下面我們來(lái)看兩個(gè)代碼
#include <stdio.h> int main() { int a = 0; int b = 0; for (a = 1; a <= 10; a++)//a從0開始,到十結(jié)束循環(huán),每次循環(huán)a自增一次 { b = b + 1; if (b > 5) break;//跳出循環(huán) printf("%d ", b); } return 0; }//此程序的輸出結(jié)果為1 2 3 4 5
#include<stdio.h> int main() { int a = 0; int b = 0; for (a = 1; a <= 10; a++)//a從1開始,到十結(jié)束循環(huán),每次循環(huán)a自增一次 { b = b + a; printf("%d ", a); if (a % 2 == 0)//如果a除以二的余數(shù)等于0 continue;//跳出這次循環(huán),繼續(xù)下一次循環(huán) printf("%d\n",b); } return 0; }
return 語(yǔ)句的一般形式為:
return 表達(dá)式;
或者:
return (表達(dá)式);
就是對(duì)函數(shù)返回類型的說明
int func(){ printf("http://c.biancheng.net\n"); }
-
const,typedef,sizeof,volatile
const
const int Max = 230;//用const修飾的變量,它的值不能被改變,在整個(gè)作用域中都保持固定
sizeof
sizeof使用形式: sizeof(type) 數(shù)據(jù)類型必須用括號(hào)括住: sizeof(int)
#include<stdio.h> int main() { int b = 2; printf("%d", sizeof(b)); return 0; }
因?yàn)閠ypedef和volatile所需要的篇幅較大,小編會(huì)在后期的文章中逐一講解哦
總結(jié)
以上就是今天要講的內(nèi)容,本文僅僅簡(jiǎn)單介紹了C語(yǔ)言常用關(guān)鍵字的使用,而關(guān)鍵字在除本文介紹之外的用法,還有許多強(qiáng)大的功能,隨著編程基礎(chǔ)的提高,大家可以慢慢去探索哦