变量的作用域和生命周期
作用域: 这个变量在哪里使用,哪个领域就是作用域;
局部变量的作用域:变量所在的局部范围;
全局变量的作用域:整个工程
变量的生命周期:变量的创建和销毁之间时间段
局部变量的生命周期:进入局部范围生命开始,出局部范围生命结束
全局变量的生命周期:程序的生命周期
int main() { printf("bit"); int a = 10; printf("a = %d\n", a); return 0; }
常量:
- 字面常量
- const修饰的常变量
int num = 10; //变量 num = 20; printf("num = %d\n", num);
const int num = 10; printf("num = %d\n", num); return 0;
- num就是常变量—具有常属性(不能被改变的属性)
const就是固定数值用的
- #define 定义的标识符常量:
#define MAX=1000
int n =MAX;
printf("%d\n",n);
枚举常量:
性别
enum Sex
{
//这种枚举类型的变量的未来可能取值
//枚举常量从零开始排
Male,
Female,
Secret
};
int main()
{
enum Sex = Male;
printf("%d\n", Male);
printf("%d\n", Female);
printf("%d,Secret");
return 0;
}
- 字符串:即一串字符
"hello\n"
int main()
{
char arr[]="hello";
return 0;
}
这种由双引号引起来的一串字符称为字符串字面值(String Literal)、字符串。
字符串的结束标志是一个\0的转义字符。在计算字符串长度的时候\0是结束标志,不算做字符串内容。
字符数组-数组是一组相同类型的元素
字符串在结尾的位置隐藏了一个\0的字符
int main()
{
char arr1[] = "abc";
char arr2[] = {'a', 'b', 'c'};
printf("%s\n", arr1);
printf("%s\n", arr2);
return 0;
}
以上例子中:
双引号引起来的是一串字符;单引号引起来的是一个字符
f5调试后可以发现arr1是abc,因为它的结尾有abc\0
arr2的结尾并没有结束符号\0,所以后面的数组空间被占用,出现乱码“烫烫烫
那么修改一下:
#include<stdio.h>
int main()
{
char arr1[] = "abc";
char arr2[] = {'a', 'b', 'c','\0'};
printf("%s\n", arr1);
printf("%s\n", arr2);
return 0;
}
使用strlen求字符串的长度:
eg:
#include<stdio.h>
#include<string.h>
int main()
{
int len = strlen("abc"); //string length
//引用头文件<string.h>
printf("%d\n", len);
return 0;
}
eg2:
#include<stdio.h>
#include<string.h>
int main()
{
char arr1[] = "abc";
char arr2[] = {'a', 'b', 'c', '\0'};
printf("%d\n", strlen (arr1));
printf("%d\n", strlen (arr2));
return 0;
}