C语言入门Part 3—大致梳理(中篇)

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 宏定义语句 常用来定义常量(包括无参量和带参量),在于处理过程中进行,所以难以发现潜在错误

猜你喜欢

转载自blog.csdn.net/qq_43360037/article/details/96483094