C语言笔记——这章其实我是有些迷的
C语言笔记——这章其实我是有些迷的
逗号运算符
主要就是进行顺序运算,运算级别算是最低的运算符了,比赋值运算符 =
的级别还低。
形式:表达式1 , 表达式 2, 表达式3
上述表达式的主要意思就是先执行表达式1,然后是表达式2,最后是表达式3
如果形式是这样:a = 1,c = a + 1;
这样一个语句的话,那么就是先对 a 进行赋值,然后 c = a + 1
条件运算符
条件运算符和上述的逗号运算符有些类似。
形式:exp1 ? exp2 : exp3
exp都是表示这是表达式
相当于 if
语句的简化版,上述的式子的意思就是, exp1是个判断表达式,要是为真就是执行exp2;要是为假就执行exp3。
数组
不能动态定义。
但是这条在理解上有点问题,原本是不能动态定义的但是一会儿下面我会给个例子,他在C99标准下是可以运行的。因为如果按照我的理解就可以接受这个问题,要是理解不了就还是强行记背吧。
#include<stdio.h>
int main()
{
int n;
printf("plz input length of text:");
scanf("%d",&n);//只读取了数字,就还在缓冲区中留下一个\n
char a[n+1];//这里为啥要多声明一个位呢,主要就是为了放后面的\0断位符
printf("plz input your text:",a);
getchar();//这是为了抵消缓冲区中还残留的一个\n
for(i=0;i<n;i++)
{
scanf("%c",a[i]);
}
a[n+1] = '\0';//这里就是断位符
printf("your text is:%s",a);
return 0;
}
在上面这个代码中的这种动态声明就是可以的,因为我觉得其实不算是动态吧,毕竟 n 的值是一开始就先定了,然后再声明 a 数组的。
数组的第一个元素是从下标 0 开始的。
数组的初始化
如果要将数组的值都赋为 0
int a[10] = {0};
这里只是把数组的第一个赋值为 0 ,但是后面他会自动赋值为 0 的。
如果你只是声明了,但是并没有赋值的话,一个都没赋值的那种的话,数组的地址是分配好的但是并没有给那个地址上的值初始化。
在数组初始化的时候还可以偷懒,可以不输入数组的长度直接在 = 号后面输入需要存入的数据,然后写成
int a[] = {0 ,1 ,2}
这样的
sizeof函数
如果sizeof的参数是一个数组,则计算的是这个数组占用的内存空间大小,比如:
#include<stdio.h>
int main()
{
int a[10] = {0};
printf("%d",sizeof(a));
return 0;
}
这样的运行结果就是 40 ,所以这个函数的参数是一个数组的话,他计算的就是这个数组占用的内存大小。
在头文件:string.h 中,他的主要作用就是一个计数器,统计的就是长度了,并不是空间大小了。
sizeof函数和strlen函数的主要区别
这里直接给个百度百科词条连接吧,上面讲得挺详细的,可以直接参考看懂他。
[strlen函数和sizeof函数的区别](https://baike.baidu.com/item/strlen/2737 “strlen函数和sizeof函数的区别”)