产品采样注意事项:c语言中数组的问题

来源:百度文库 编辑:杭州交通信息网 时间:2024/05/11 05:49:11
16.有下面的程序段
char a[3],b[ ]="China";
a=b;
printf("%s",a);
则:( )
A. 运行后输出China B.运行后将输出Ch
C. 运行后将输出Chi D.编译出错
为什么选d怎么不选c

char a[]声明的数组,a虽然说可以当指针,指向数组首地址,但其实是常量,给常量赋值当然出错,无法编译。其实a在编译时被转化成了栈的数组地址,它本身并没有地址空间。(有点说不清楚,但就是这样,就把它当成常量好了)
不论a[3]或是a[3000]都是这样,和数组大小没关系

因为b数组中是大于3的,所以你把值附给A数组时就出错了,溢出了

后面超过前面的容量了。溢出错误。