| 一、必须理解的几个概念1.变量的作用域和生命周期(1)作用域:| 作用域(scope)概念:一段程序代码中所用到的名字并不是总是有效的,限定这个名字的可用性的代码范围就是这个名字的作用域。 | 
 ①局部变量的作用域是变量所在的局部范围。②全局变量的作用域是整个工程
 ③局部变量与全局变量重名时,局部变量优先
 举个例子:
 #include<stdio.h>
int a = 10;
int Add(int z, int b)
{
	int a = 100;
	return a + b;
}
int main()
{
	int a = 3;
	int b = 4;
	printf("%d", Add(a, b));
}
 代码结果如下: 可以看到尽管变量a有三次重复,优先选取局部,即在Add函数里面定义的变量a。
 再举个例子:
 #include<stdio.h>
int a = 10;
void test()
{
	int a = 3;
	a++;
}
int main()
{
	test();
	printf("%d", a);
}
  在test函数里面优先使用局部变量a,出了test函数变量销毁,因此在main函数里头a还是全局变量的a,即a=10。
 (2)生命周期| 生命周期的概念:变量的生命周期指的是变量从创建到销毁的一个时间段。 | 
 ①局部变量的生命周期:进入作用域生命周期开始,出作用域生命周期结束。②全局变量的生命周期:整个程序的生命周期。
 二、转义字符(1)
 | 转义字符(Escape Character)是指在ASCII码和Unicode等字符集中的无法被键盘录入的字符、被当作特殊用途而需要转换回它原来的意义的字符。 | 
 ASCII编码中的转义字符对应意义如下:
  比如下面这道笔试题:
 请回答该段代码输出什么:
 
  输出结果如下:
 
  其中的\t,\62为转义字符,在字符串中只占据一个字节。
 三、常见的关键字
 (1)关键字 typedef| typedef 顾名思义,是用来重命名类型。 例子如下: | 
 
 (2)关键字static| static用来修饰变量和函数: ①修饰局部变量-称为静态局部变量
 ②修饰全局变量-成为静态全局变量
 ③修饰函数-成为静态函数
 | 
 ①修饰局部变量例子:分析下面两段代码代码一:
 #include <stdio.h>
void test()
{
	int i = 0;
	i++;
	printf("%d ", i);
}
int main()
{
	int i = 0;
	for (i = 0; i < 10; i++)
	{
		test();
	}
	return 0;
}
 运行结果如下:
  可以看到由于test函数中的变量i出了函数作用域生命周期结束,自动销毁。
 第二段代码:
 #include <stdio.h>
void test()
{
	
	static int i = 0;
	i++;
	printf("%d ", i);
}
int main()
{
    int i=0;
	for (i = 0; i < 10; i++)
	{
		test();
	}
	return 0;
}
 运行结果如下:
  可以看出static改变了test函数中的i变量的生命周期,i即使出了函数作用域依旧存在,直到程序结束。(static将栈区的变量i放到了静态区中)
 ②static修饰全局变量修饰前:
  (其中使用外部源文件的全局变量需用extern声明)
 用static修饰后:
 
  即全局变量用static修饰后,变量只能在本源文件内使用,不能在其他源文件内使用。
 ③修饰函数:修饰前:
  (使用外部源文件的函数不需要用extern声明)
 修饰后:
  可以看到static修饰函数与修饰全局变量的效果如出一辙,事函数只能在本源文件内使用,不能在其他源文件内使用。
 |