目录
- 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
前言
对于刚入门c语言的小白而言,了解C语言的关键字,包括其含义、用法,对分析和编写C程序都有着极其重要的作用
一、关键字是什么?
关键字又称为保留字,就是已被C语言本身使用,不能作其它用途使用的字,关键字不能用作变量名、函数名等
下面是小编总结的c语言常用的32个关键字
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 |
二、关键字使用方法
1.关键字分类
- 数据类型关键字(12个)
int | 整型变量或函数 |
char | 字符型变量或函数 |
float | 浮点型变量或函数 |
double | 双精度变量或函数 |
enum | 枚举类型 |
short | 短整型变量或函数 |
long | 长整型变量或函数 |
signed | 有符号类型变量或函数 |
unsigned | 无符号类型变量或函数 |
struct | 结构体变量或函数 |
union | 联合数据类型 |
void | 修饰函数,说明函数无返回值 |
修饰指针,说明指针是不确定数据类型的指针 | |
函数无返回值或无参数,无类型指针 |
- 存储类型关键字(4个)
auto | 声明自动变量 |
static | 声明静态变量 |
register | 声明存储器变量 |
extern |
声明变量,在其他文件中声明,亦引用变量 |
- 控制语句关键字(12个)
跳转结构 | goto | 无条件跳转语句 |
continue | 结束当前循环,开始下一轮循环 | |
break | 跳出当前循环或switch结构 | |
return | 子程序返回语句,可带或不带参数 | |
循环结构 | for | for循环结构 |
do | 循环语句的循环体 | |
while | 循环语句的循环条件 | |
分支结构 | if | 条件语句 |
else | 条件语句否定分支(与 if 连用) | |
switch | 用于开关语句 | |
case | 开关语句分支 | |
default | 开关语句中的“其他”分支,可选 |
- 其他关键字
const | 声明只读变量 |
sizeof | 计算对象所占内存空间大小 |
typedef | 给数据类型取别名 |
volatile | 说明变量在程序执行中可被隐含地改变 |
2.使用方法(详解)
1.数据类型关键字
-
int,float,double,char
#define _CRT_SECURE_NO_WARNINGS 1 #include <stdio.h> int main() { int a = 1;//定义一个整型数a,并且初始化为1 float b = 2;//定义一个单精度浮点型数b,初始化为2 double c = 10;//定义一个双精度浮点数c,初始化为10 char ch1 = 'x';//定义一个字符型数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;//定义长整型数a,初始化为4 short int b = 7;//定义一个短整型数b,初始化为7 signed int d = 2;//定义一个有符号整型数d,初始化为2 unsigned int c = 8;//定义一个无符号整型数c,初始化为8 printf("%u", c); return 0; }
-
union,struct()
定义格式为
union 共用体名
{
成员列表
};
如:
#include <stdio.h> union book { float price; char name[40]; int id[20]; };//此共用体包含三个成员,分别是价格price,书名name,书籍序列号id
struct用法与union一样,两者不同的是结构体的各个成员会占用不同的内存,互相之间没有影响;而共用体的所有成员占用同一段内存,修改一个成员会影响其余所有成员
-
enum
定义格式为:
enum 枚举名
{枚举值名表};
如:
#include <stdio.h> enum {Jan,Fed,Mar,Apr,May,Jun,Jul,Aug,Sept,Oct,Nov,Dec}; //枚举一年中的1到12月
2.存储类型关键字
-
auto
#include <stdio.h> void sub(float a) { auto int i;//这个i被auto修饰,为局部变量,生命周期只在这个括号内 }
-
static
-
register
寄存器变量也是自动变量,这种变量的值是保留在cpu的寄存器中,程序运行时,访问存于寄存器内的值要比访问存于内存中值要快得多,因此当程序对运行速度较高时,可把那些频繁引用的少数变量指定为register变量以提高运行速度
#include <stdio.h> int main() { int power(int a, register int n);//函数声明 int s; s = power(5, 3); printf("%d\n", s); } int power(int x, register int n)//函数定义 { register int p; for (p = 1; n; n--) p = p * x; return p; }
-
extern
这个函数用代码举例可能没有文字描述直观,那小编就以字代码和大家唠唠吧
在我们写代码时,在一个project工程下,我们建立一个test-1.c文件和一个test-2.c文件,假如我们在第一个test-1.c文件中自定义了一个函数,假使我们在test-2.c文件中还需要用到这个函数,我们就可以用auto+函数声明,此时就可以调用外部函数啦
3.控制语句关键字
-
for ,do ,while
C语言 for 循环语句的一般格式如下:
for(表达式1; 表达式2; 表达式3)
循环体语句;
#include<stdio.h> int main() { int a = 0;//定义一个整型数并且初始化为0 for (a = 0; a <= 5; a++)//for循环,a从0开始,到5结束,每次循环完a自增1 { printf("海绵宝宝");//循环一次打印一次海绵宝宝 } return 0; }
在C语言中do while一般连用构成循环
do
{
语句;
}
while (表达式);
#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连用的,所以我们放在一起
语法为:
if(表达式)
{语句}
if(表达式)
{语句}
else(表达式)
{语句}
if分支有单分支,双分支,多分志的结构,在这里我就例举一种情况来说明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的范围内) { printf("我不可爱"); } return 0; }
case, switch, default一般情况下在一起用,这里小编也放在一起和大家讲啦
switch 语句根据控制表达式的值,可以把程序流跳转到多个语句中的一个执行:括号里的表达式具有整数类型,并且这里的语句就是该 switch 主体,它包括了多个 case 情况,以及最多一个 default 。
括号里的表达式会被计算一次,并和 case 标签中的常量表达式做比较。如果表达式的值匹配其中的某个 case 常量,程序流就会跳转到该 case 标签后面的语句。如果没有匹配的 case 常量,程序流就会跳转到 default 标签后的语句(如果存在 default 标签)。
switch语句的一般表达形式
switch(表达式)
{
case 常量表达式1:语句1;
case 常量表达式2:语句2;
...
case 常量表达式n:语句n;
default:语句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结束后不加break,程序就会继续往下执行 case 6: printf("D\n"); break; default: printf("over"); } return 0; }
在这里小编还要强调的是,初学C语言的小伙伴一定要深究加break与不加break的区别,只有弄清楚这个,程序才能达到自己想要的结果哦
-
goto ,continue,break,return
goto语句成为无条件转向语句,一般形式:
goto 语句标号;
比如说,我们需要从键盘输入一组数据,以零作为结束输入数据标志,求这组数据之和,这是我们可以借助goto来实现
#define _CRT_SECURE_NO_WARNINGS 1 #include <stdio.h> int main() { int number = 0; int sum = 0; loop:scanf("%d", &number);//loop是配合goto使用的,相当于一个行标号 sum += number;//sum=sum+number if (number != 0) goto loop;//跳转到loop标记的那一行 printf("the total sum is%d\n", sum); return 0; }
前面我们讲到,break用来跳转出switch语句当 break 关键字用于 while for循环时,会终止循环而执行整个循环语句后面的代码,满足条件时便跳出循环。
continue 语句的作用是跳过循环体中剩余的语句而强制进入下一次循环。下面我们来看两个代码
#include <stdio.h> int main() { int a = 0; int b = 0; for (a = 1; a <= 10; a++)//a从0开始,到十结束循环,每次循环a自增一次 { b = b + 1; if (b > 5) break;//跳出循环 printf("%d ", b); } return 0; }//此程序的输出结果为1 2 3 4 5
#include<stdio.h> int main() { int a = 0; int b = 0; for (a = 1; a <= 10; a++)//a从1开始,到十结束循环,每次循环a自增一次 { b = b + a; printf("%d ", a); if (a % 2 == 0)//如果a除以二的余数等于0 continue;//跳出这次循环,继续下一次循环 printf("%d\n",b); } return 0; }
return 语句的一般形式为:
return 表达式;
或者:
return (表达式);
就是对函数返回类型的说明
int func(){ printf("http://c.biancheng.net\n"); }
-
const,typedef,sizeof,volatile
const
const int Max = 230;//用const修饰的变量,它的值不能被改变,在整个作用域中都保持固定
sizeof
sizeof使用形式: sizeof(type) 数据类型必须用括号括住: sizeof(int)
#include<stdio.h> int main() { int b = 2; printf("%d", sizeof(b)); return 0; }
因为typedef和volatile所需要的篇幅较大,小编会在后期的文章中逐一讲解哦
总结
以上就是今天要讲的内容,本文仅仅简单介绍了C语言常用关键字的使用,而关键字在除本文介绍之外的用法,还有许多强大的功能,随着编程基础的提高,大家可以慢慢去探索哦