我是靠谱客的博主 危机乐曲,最近开发中收集的这篇文章主要介绍C语言的32个关键字(简单介绍加解析方便记忆)C32关键字关键字解读,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

C32关键字

分支(5)

  1. if
  2. else
  3. switch
  4. case
  5. default

循环(3)

  1. for
  2. while
  3. do

跳转(4)

  1. return
  2. goto
  3. continue
  4. break

内建(7)

  1. void
  2. int
  3. short
  4. char
  5. long
  6. double
  7. float

自建(4)

  1. struct
  2. union
  3. enum
  4. sizeof

类型限定(9)

  1. auto
  2. const
  3. static
  4. volatile
  5. register
  6. extern
  7. typedef
  8. unsigned
  9. 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

  1. 返回一个数据给函数的调用者
  2. 结束函数的执行
函数返回值为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=0do
{
	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

  1. 改变储存位置:
    改变局部变量的储存位置,由stack改为data或者bss
  2. 延长生命周期:
    延长局部变量的生命周期。
  3. 限制作用范围:
    限制全局变量、函数只能在本文件中使用
    可以防止全局变量、函数命名冲突,或者也可以防止别人调用
#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 = 10if(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 char1-128~127
unsigned char10- 255

short

类型字节范围
signed short2-32768~-32767
unsigned short20~65535

int

类型字节范围
signed int4正负20亿
unsigned int4正40亿

long

类型字节
signed long4/8
unsigned long4/8

float

类型字节
float4

double

类型字节
double8

自建类型(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关键字关键字解读所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(44)

评论列表共有 0 条评论

立即
投稿
返回
顶部