例子求字符串的长度
求该字符串的长度 c:\test\bit\113.c
a) \t 是转义字符 算一个字符
b) \b 是转义字符 算一个字符
c) \113 是转义字符 算一个字符
\0是字符串的结束标志,strlen在求字符串长度的时候,统计的是\0之前字符的个数
复制代码
//求一个字符串的长度
int len = strlen("abc"); //string len
printf("%d\n", len);
// \0 是字符串的结束标志,strlen在统计字符串长度的时候,统计的是\0 之前的字符串个数
int len1 = strlen("c:\test\bit\113.c");
printf("%d\n", len1);
布尔类型
0表示假,1表示真
复制代码
bool flag = false;
//0 表示假,1表示真
if (flag)
{
printf("haha\n");
}
else
{
printf("hehe\n");
}
short s = 2;
int b = 10;
printf("%d\n", sizeof(s = b+1));
printf("s = %d\n", s);
sizeof 是求数据类型的大小,不会因数据的变化,而改变数据类型的大小
signed 和 unsigned
signed 关键字,表⽰⼀个类型带有正负号,包含负值;
unsigned 关键字,表⽰该类型不带有正负号,只能表⽰零和正整数。
%d:有符号 int,正常打印正负、0
%u:无符号 unsigned int,只打印非负数字
复制代码
//有符号数 用%d 可以打印正负数,以及0
signed int a = 10;
printf("%d\n", a);
a = -20;
printf("%d\n", a);
a = 0;
printf("%d\n", a);
// 无符号数 只能打印大于0的数
unsigned int b = 12;
printf("%u\n", b);
全局变量和局部变量
全局变量和局部变量在内存中的存储地方
1)局部变量是放在内存的栈区
2)全局变量是放在内存的静态区
3)堆区是⽤来动态内存管理的
变量初始化核心知识点
1)局部变量
a)位置:栈区
b)自动初始化:不会自动初始化为 0
c) 如果只声明不赋值,内存里是栈遗留的随机垃圾值
d)直接使用属于未定义行为,结果随机,每次运行可能不一样
e)局部变量定义时手动初始化:int a = 0;
2)static 修饰的局部变量
a)位置:静态区(全局数据区)
b)生命周期:程序整个运行周期,函数结束不销毁
c) 自动初始化:不赋值默认就是 0,只初始化一次
复制代码
void test(){
static int a;
printf("%d",a); //输出0
}
3)全局变量
a)位置:静态区
b)自动初始化:不写 = 0,默认自动初始化为 0
c) 生命周期:整个程序
复制代码
int g_num; //全局,默认0
int main(){
printf("%d",g_num); //打印0
return 0;
}