#include <studio.h>
int global = 2019;//全局变量
int main()
{
int local = 2018;//局部变量
int global = 2020;//局部变量
printf("global = %d\n", global);
return 0;
}
上面“global”局部变量的定义是没问题的。
当局部变量和全局变量同名时,局部变量优先使用。
变量的作用域和生命周期
作用域(scope):通常情况下,一段代码中所用到的名字并不是总是有效/可用的,
而限定名字可用性的代码范围的就是这个名字的作用域。
局部变量的作用域:就是变量所在的局部范changl围;
全局变量的作用域:整个工程。【若跨文件定义变量,需要声明(extern int 变量名;)】
生命周期
变量的生命周期:变量的创建和销毁之间的时间段。
局部变量的生命周期:进入变量所在的局部范围生命开始,出局部范围生命结束;
全局变量的生命周期:程序的生命周期。
常量
1.字面常量,例如:3.14,10,'a','abc'......
2.const修饰的常变量,例如:(const int num = 10;) 被const修饰,表示该值不可被修改,此时的‘num’被称为常变量,即具有常属性(不能被改变的属性)。
#include <stdio.h>
int main()
{
int arr[10] = {0}; // 10个元素
const int n = 10;
int arr2[n] = {0};//n是变量,这里是不行的。
return 0;
}
//不过C++里是可以使用这种语法的。
3.#define定义的标识符常量
#include <stdio.h>
#define a = 10000
int main()
{
int n = 'a';
printf("n=%d\n", n);
return 0;
}
4.枚举常量
可以一一列举的常量。
枚举常量默认从0开始。
#include <stdio.h>
enum Sex
{
//这种枚举类型的变量的未来可能取值:
MALE,
FEMALE,
SECRET
};
int main()
{
printf("%d\n", MALE);
return 0;
}
‘MALE’可以写‘MALE=3,’,附初值。
字符串+转义字符+注释
字符串就是一串字符 - 用双引号括起来的一串字符。
注:字符串的结束标志是一个“\0”的转义字符。在计算字符串长度的时候“\0”是结束标志,不算作字符串内容。
int main()
{
//字符数组 - 数组是一组相同类型的元素
//字符串在结尾的位置隐藏了一个\0的字符
//\0是字符串的结束标志
//char arr[] = "hello";
char arr1[] = "abc";
//char arr2[] = {'a', 'b', 'c'}; //arr2在打印完abc后不会停止,若要停止,要加一个\0。
char arr2[] = {'a', 'b', 'c','\0'};
//求字符串长度
//int len = strlen("abc");//string length 引用头文件#include<string.h>
//printf("len");
printf("%d\n", strlen(arr1));
printf("%d\n", strlen(arr2));
//printf("%s\n", arr1);
//printf("%s\n", arr2);
return 0;
}