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

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

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'


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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值