C语言数组与字符串初始化

来源:互联网 发布:成就最高的女演员知乎 编辑:程序博客网 时间:2024/05/21 06:28

面试的时候遇到的题,以解疑惑:

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'


最近才发现以前学习的时候是有多疏忽,欢迎赐教

0 0
原创粉丝点击