关于局部变量与全局变量:
局部变量的作用域就是其所在的局部范围;全局变量的作用域这是整个程序。
变量的生命周期是指:变量创建到销毁的那段时间;
1.局部变量的生命周期是:进入作用域生命周期开始,出作用域结束;
2.全局变量的生命周期是:整个程序的生命周期,也是main函数的生命周期;
关于C语言中的常量有:
1.字面常量 :就是普通字符,如1,3.14,“abc” 等等。
2.const 修饰的常变量:
列入:
const int a = 10; //这其中a本质上还是变量,但是无法修改;
int arr[a] = { 0 };//这种写法是不正确的的,arr后的 [ ] 中必须是一个常量;
3.#define 定义的标识符常量:
比入:
#define MAX 10 // 此时 MAX 是一个常量是变不了的;
若此时在给 MAX 赋上新的值是会报错的,如下图;
4.枚举常量:并不常用。
关于字符串:
字符串可以放在数组中:
char arr1[] = "abc";
char arr2[] = { 'a', 'b', 'c', '\0' };
char arr3[] = { 'a', 'b', 'c'};
printf("%s\n", arr1);//打印abc (注意: "abc"中在‘a’,‘b’,‘c’后自带 ‘\0’)
printf("%s\n", arr2);//打印abc
printf("%s\n", arr3); //没有 ‘\0 ’ 不会停,abc后打印出的是随机值。
(注意:‘\0 ’或 0 代表的是字符串的结束标志)
关于转义字符:
想要打印 "c:\code\test.c\n"的话,需要输入 printf("c:\\code\\test.c\n");多加一个斜杠防止转意。
printf("%d\n",strlen("asdf\0agf"));//结果是4 就算\0之前的几个数;
printf("%d\n", strlen("c:\code\test.c\n"));//结果是13 \t 是转意字符 ,\n 不算;
printf("%d\n", strlen("c:\test\128\c\n"));//结果是10 \ t 和 \12 是转意字符 , \n不算;
(注意:“ = ”是赋值 , “==”才是等于号)
关组于数:
int arr[10] = { 1, 2, 3, 4, 5 }; //这种称为不完全初始化;
数组的下标会比其个数小一,
比如 :
int arr[10] = { 1, 2, 3, 4, 5 };
printf("%d\n", arr[4]); // 结果是上列数组中的5;
如何计算数组中元素的个数:可以使用 int sz = sizeof(arr) / sizeof(arr[0]);
( 注意: sizeof(arr) 计算的是arr 中数组所占得空间;
比如:int arr[] = { 1, 2, 3, 4, 5 };
printf("%d\n", sizeof(arr));// 结果是20 : 5*4=20 5个数字,一个占4个字节,一共20字节;
int arr[] = { 'a','b','c' };
printf("%d\n", sizeof(arr));// 结果是12 : 3*4=12 2个数字,一个占4个字节,一共12字节
int arr[] ={“abc”};
printf("%d\n", sizeof(arr));// 结果是4
char arr[] = { 'a','b','c' };
printf("%d\n", sizeof(arr));// 结果是3 : 3*1=3 3个数字,一个占1个字节,一共3字节
char arr[] =“abc”;
printf("%d\n", sizeof(arr));// 结果是4: 4*1=4 因为‘\0’也要算,因为也占了空间;
strlen (arr)计算的是arr 中字符的个数;
char arr[] =“abc”;
printf("%d\n", strlen(arr));//结果是3
char arr2[] = { 'a', 'b', 'c',0 };
printf("%d\n", strlen(arr2));//结果是3
char arr2[10] = { 'a', 'b', 'c',0 };
printf("%d\n", strlen(arr2));//结果是3 :因为算的是字符的个数;
char arr2[] = { 'a', 'b', 'c' };
printf("%d\n", strlen(arr2));//结果是随机值,因为没有0或‘\0’不会停;
此外strlen 是函数,sizeof 是操作符。)