面试的时候遇到的题,以解疑惑:
1、数组初始化
C语言中,如果定义数组时没有初始化,数组元素是否初始化分为:
若是函数体外定义的内置数组,则数组中的元素均自动初始化为零;
若是函数体内定义的内置数组,则其元素无初始化。
2、字符串初始化,看一下三种:
void main()
{
char a[]={'b','o','y'};
char b[]="boy";
char c[]={'b','o','y','\0'};
printf("a的长度是:%d\n",strlen(a));
printf("b的长度是:%d\n",strlen(b));
printf("c的长度是:%d\n",strlen(c));
}
运行结果是:
问题在于:
a 的 结尾没有 NULL 符号,编译器不知道会什么时候结束;
b 这样定义的时候会在字符串末尾自动加上 NULL 即 '\0';
c 这种是自己明确接上去的 结束符 '\0'
最近才发现以前学习的时候是有多疏忽,欢迎赐教