概述
C32关键字
分支(5)
- if
- else
- switch
- case
- default
循环(3)
- for
- while
- do
跳转(4)
- return
- goto
- continue
- break
内建(7)
- void
- int
- short
- char
- long
- double
- float
自建(4)
- struct
- union
- enum
- sizeof
类型限定(9)
- auto
- const
- static
- volatile
- register
- extern
- typedef
- unsigned
- signed
关键字解读
流程控制相关的(12)
分支(5)
if
条件语句,当括号内为真则执行下面语句,为假不执行
if(条件表达式1)
{
执行语句1:
}
if(条件表达式2)
{
执行语句2:
}
例子 :
if(x>0)
{
printf("小于零");
}
else
条件语句否定分支(与 if 连用)
if else
if(条件表达式)
{
执行语句1;
}
else //else 否则的意思。
{
执行语句2;
}
例子:
if(x>0)
{
printf("小于0");
}
else
{
printf("大于等于0");
}
else if
if(条件表达式)
{
执行语句1;
}
else if (条件表达式)
{
执行语句2;
}
……
else
{
执行语句n;
}
例子 :
if(x>0)
{
printf("小于0");
}
else if(x==0)
{
printf("等于0");
}
else
{
printf("大于0");
}
switch(用于开关语句 )
case(用于开关语句 )
default(用于开关语句 )
switch case default break一般一起出现
若语句后不加break;则会输出一堆。下面有例子
switch(n)//n可以是数值、表达式,运算结果必须是整数
{
case val: //val必须是常量
...
break;//关闭执行开关,如果每个case后面都有一个break,形成了分支结构
default: //如果每个case都没打开,则打开该执行开关,而且任何位置都最后生效
}
举例子:输入一个整数 1输出haha 2输出xixi 其他情况都输出 hehe
若都不加break的话,输入1的时候,会输出 hahaxixihehe
#include <stdio.h>
int main()
{
int a;
scanf("%d",&a);
switch(a)
case 1: printf("haha"); break;
case 2: printf("xixi");break;
default: printf("hehe");break;
}
跳转(4)
break
结束跳出循环作用
例子: 当i等于5的时候结束了循环
int i;
for(i=0;i<10;i++)
{
if(5==i)
break;
}
printf("%d",i);
continue
结束当前这一次循环 ,进入下一次循环
例子: 正常s等于10 但因为在i等于5的时候遇到了continue 后面语句不执行了 少+了一次 最后等于9
int i,s=0;
for(i=0;i<10;i++)
{
if(5==i)
continue;
s++;
}
printf("%d",s);
goto
无条件跳转语句 ,可以实现在函数内任意跳转 ,但不建议使用。 太灵活了,导致别人很难理解代码,且出错了很难找到。
但是它在驱动编程时特别适合处理异常。
例子 : 跳到 haha :位置执行语句 下面是个死循环
标签名: 语句;
goto 标签名;
例子:
haha: i++;
goto haha;
return
- 返回一个数据给函数的调用者
- 结束函数的执行
函数返回值为0
return 0
main函数内 遇到则结束
循环(3)
for
for(表达式1;表达式2;表达式3)
{
语句块4;
}
执行过程为 1 2 4 3 2 4 3 2 .... 当2为假时结束
表达式1:初始化循环因子,最早被执行,只执行一次
表达式2:判断,每次进入循环前都要进行判断,每次都执行
表达式3:步进,修改循环因子的值(在执行完语句块1后才执行),每次都执行
表达式4:执行0次或以上
例子 :
for(;;) //死循环
for(int i=0;i<100;i++)//循环100次
while
所有的for循环都可以用while来表示,看习惯使用
while(表达式1)
{
表达式2;
}
表达式1:判断,每次进入循环前都要进行判断,每次都执行
表达式2:相较于for循环中的语句块1增加了步进即修改循环因子的值,执行0次或以上
循环因子的初始化在while循环前
例子:
while(1) //死循环
int i=100 //循环100次
while(i--)
{
}
do
与while 配合使用
先执行循环体,再判断循环条件,该循环体至少执行一次, 适合先干活,后检查的情况
do
{
表达式2;
}
while(表达式1);
表达式1:判断,每次进入循环前都要进行判断,每次都执行
表达式2:相较于for循环中的语句块1增加了步进即修改循环i因子的值,相较于while循环中的表达式1执行次数变为1次或以上
循环因子的初始化在while循环前
例子 :虽然 一开始就不小于0 但还是要先进一次循环后在判断条件 最后输出的i等于1
int i=0;
do
{
i++;
}
while(i<0);
printf("%d",i);
数据类型相关的(20)
类型限定符(9)
auto
声明自动变量
现在不加就等于加了,加了反而容易出错。
在C11标准中 :auto给了新功能,自动识别变量类型
例子 :
int a=2;
double b=3.14;
-----等价-------
auto a=2;
auto b=3.14;
const
防止变量被显示的修改,使用const关键字修饰的变量,一定要对变量进行初始化
例子 :下面就会报错
const int a=10;
a=100;
例子2:隐式修改可以,虽然有警告还是修改成功了。
#include <stdio.h>
int main(int argc,const char* argv[])
{
const int a=10;
int* q=&a;
*q=100;
printf("%d",a);
}
------------------------------
1.c: 在函数‘main’中:
1.c:6:9: 警告: initialization discards ‘const’ qualifier from pointer target type [默认启用]
100
请按 ENTER 或其它命令继续
static
- 改变储存位置:
改变局部变量的储存位置,由stack改为data或者bss - 延长生命周期:
延长局部变量的生命周期。 - 限制作用范围:
限制全局变量、函数只能在本文件中使用
可以防止全局变量、函数命名冲突,或者也可以防止别人调用
#include <stdio.h>
static int j;
void f(void)
{
static int i=0;
i++;
printf("i=%d ",i);
}
void g(void)
{
j=0;
j++;
printf("j=%dn",j);
}
int main(int argc,const char* argv[])
{
for(int k=0;k<10;k++)
{
f();
g();
}
}
-------------------------------
i=1 j=1
i=2 j=1
i=3 j=1
i=4 j=1
i=5 j=1
i=6 j=1
i=7 j=1
i=8 j=1
i=9 j=1
i=10 j=1
请按 ENTER 或其它命令继续
volatile
如果变量值没有被显示地修改,在使用这个变量时不会每次都从内存中读取,而会继续使用上一次读取的结果
如果使用volatile修饰后的变量,每次使用该变量时,都会从内存读取一次。
一般用于硬件编程或者多线程编程
例子 :不一定永远相等
volatile int num = 10;
if(num == num)
{
}
register
申请把变量的储存介质由内存改寄存器,可以大大提升运算速度,但是由于寄存器数量有限,申请不一定成功。(编译器可能会根据实际情况忽略这个请求)
register int a = 0;
extern
声明变量,意识是声明此变量已经在别处定义了,请放心使用
只是临时让编译能够通过,链接时如果找不到依然报错
声明外部变量时,不可以赋值
extern int teacher_i;//老师总数
typedef
类型重定义,定义变量时如果前面加入typedef那么变量名就变成了这种类型(注意:不是替换关系)
1. typedef int num; 类型重定义
2. #define num int 替换
unsigned
无符号类型
unsigned char a; //这时候a的范围是0-255
char a; //范围是-128 - 127
signed
有符号类型
默认就是有符号的,不需要写。
signed char a;
signed int a;
内建类型(7)
void
void最常见的用法,就是在函数中限定函数的参数和返回值的 void draw(void); 表明函数draw没有参数也没有返回值 。
void* 类型后面才学 跟函数回调有关
char
类型 | 字节 | 范围 |
---|---|---|
signed char | 1 | -128~127 |
unsigned char | 1 | 0- 255 |
short
类型 | 字节 | 范围 |
---|---|---|
signed short | 2 | -32768~-32767 |
unsigned short | 2 | 0~65535 |
int
类型 | 字节 | 范围 |
---|---|---|
signed int | 4 | 正负20亿 |
unsigned int | 4 | 正40亿 |
long
类型 | 字节 |
---|---|
signed long | 4/8 |
unsigned long | 4/8 |
float
类型 | 字节 |
---|---|
float | 4 |
double
类型 | 字节 |
---|---|
double | 8 |
自建类型(4)
struct(结构)
结构(struct)联合(union)枚举(enum)
struct 结构名
{
类型 变量名;
类型 变量名;
...
} 结构变量;
union(联合)
结构(struct)联合(union)枚举(enum)
enum(枚举)
结构(struct)联合(union)枚举(enum)
sizeof
求字节数,用到的地方很多,很实用的一个关键字
printf("%d",sizeof(long));
最后
以上就是危机乐曲为你收集整理的C语言的32个关键字(简单介绍加解析方便记忆)C32关键字关键字解读的全部内容,希望文章能够帮你解决C语言的32个关键字(简单介绍加解析方便记忆)C32关键字关键字解读所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复