C语言入门Part 3
关键字: 常见关键字介绍及用法,static 和 extern区别与联系,typedef和#define区别
常见关键字
- auto 存储说明符 声明变量的生存期为自动,所声明的变量默认为整型(声明之后变量生命周期还是在当前括号中,所以在C语言中用的不多)
- break 跳出当前循环,结束所有循环
#include<stdio.h>
int main()
{
int i = 0;
for (i = 0; i < 4; i++)
{
if (i == 1)
{
break;//i=1时跳出循环直接执行printf语句
}
printf("HELLO\n");
}
return 0;
}//运行结果打印出1个HELLO
- continue 结束本趟循环,跳到循环判断条件处
#include<stdio.h>
int main()
{
int i = 0;
for (i = 0; i < 4; i++)
{
if (i == 1)
{
continue;//i=1时跳至外层for循环继续循环
}
printf("HELLO\n");
}
return 0;
}//运行结果打出三个HELLO
- case 用在switch(和if一样都是选择语句)中
- default 和case一起用在swtich 里面,表示默认情况下
int main()
{
int i = 0;
scanf("%d",&i);
switch(i)
{
case 1:
printf("1\n");
break;//必须加break,加break表直接跳出到return 0,不加break程序将会依次执行,如输入2,系统输出2 0,输入1,系统输出1 2 0
case 2:
printf("2\n");
break;
default://默认情况下,即输入的不是1也不是2的情况
printf("0\n");
break;
}
return 0;
}
- goto 跳转到某一条标签标识的语句(类似汇编中的JMP)
- register 寄存器 存储说明符
register int a=10;//建议编译器把a放在寄存器中
- void 无类型
- static 静态的 存储说明符
*修饰局部变量,局部变量的生命周期增长,直至整个程序执行结束,static局部变量只初始化一次,下一次依据上一次的结果值
void Test()
{
static int c = 0;//(test函数结束,c并未失效)i=0,c=0;i=1,由于static局部变量只初始化一次,下一次依据上一次的结果值,所以c=1....
c++;//c=1;c=2.....
printf("%d\n",c);//1 2 3 4 5
}
int main()
{
int i = 0;
for(i = 0;i < 5;i++)
{
Test();
}
return 0;
}
若上述程序将static int c = 0;改为 int c = 0;则结果输出五个1
*修饰全局变量,全局变量的作用域被限制在当前的源文件(.c文件)
*修饰函数,该函数作用域也被限制在当前的源文件中,其修饰的函数统称为静态函数,也叫内部函数
-
extern 声明外部符号 存储说明符
extern还可用来修饰函数,其修饰的函数统称为外部函数,可被其他函数调用。且C语言规定如果定义一个函数的时候省略extern,则隐含为外部函数。 -
static和extern的区别和联系
static用来声明一个内部函数/变量
extern用来声明一个外部函数/变量 -
typedef 类型重定义 给复杂的类型重起名
如
typedef unsigned int u_int;//u给unsigned int命名为 u_int;
typedef int Arr[10];//加上typedef后Arr就从一个数组名变为int类型(int[10] Arr类型),后续要定义一个数组直接
Arr arr={1,2,3,4,5,6....};
- typedef unsigned int u_int;和 #define u_int unsigned int 区别
typedef 关键字 常用来定义一个标识符及关键字的别名,在编译过程中进行,增加程序可读性,建议用这个
#define 宏定义语句 常用来定义常量(包括无参量和带参量),在于处理过程中进行,所以难以发现潜在错误