一、gets()函数:
1.最好不要用gets()的原因:它不检查目标数组的大小,容易空间溢出
2.gets()的用法:gets(数组名),遇到"\n"或到了文件末尾则停止读入
3.gets()返回值:程序正常时,返回的是char 的指针,程序异常(溢出)返回NULL
二、3.strlen()和sizeof()的区别:
1.sizeof()属于宏定义,计算的是所占空间字节的大小,具体大小和编译器有关,一般情况下,
sizeof(char)=1
sizeof(int)=4
sizeof(double)=8
sizeof(long)=4
sizeof(指针)=4
2.strlen()计算的是以'\0'结尾的字符串的长度(即有几个字母),不算'\0'
3.经典例子:
char * c="abcdef";
char d[]="abcdef";
char e[]={'a','b','c','d','e','f'};
printf("%d %d",sizeof(c),strlen(c));//4 6 理由:指针 || 字符串长度
printf("%d %d",sizeof(d),sizeof(d));//7 6 理由:数组所占空间的字节数(7*1,算上‘\0’一共7位,每位占1字节)
printf("%d %d",sizeof(e),strlen(e));//6 随机 理由:数组以单个元素赋值,后无‘\0’结尾,所以一共6位,每位1B ||
strlen(e),去找'\0'结尾的字符串的长度,由于找不到'\0',所以返回的值是一个不确定的值。
三、break 与continue的区别:
1.在do-while,for,while 中break跳出本层循环,continue结束本次循环
2.在单独的switch中,break表示跳出整个switch语句块,而continue不能用于单独的switch 中
3.循环内的switch:break 是指跳出switch语句块,但本次循环中switch语句块后面的代码仍然执行
continue是指结束本次循环,本次循环中switch语句后面的代码不被执行