我正在学习C语言。 当我将一个元素的数组值赋给另一个时,(看起来)奇怪的事情发生。 我的代码如下。将数组的元素赋值给另一个时,意外的值包含
int main(void){
int i =0;
char a2[] = "aaaa";
char a1[] = "bbb";
printf("%lu\n",sizeof(a2));
printf("%lu\n",sizeof(a1));
printf("%c\n",a2[4]);
printf("---\n");
for(i =0; i < sizeof(a2); i++){
a2[i]=a1[i];
printf("%c\n", a2[i]);
}
printf("---\n");
printf("%c\n", a2[4]);
return 0;
}
结果在下面。
5 4 --- b b b b --- b
我不知道为什么
一个[4]
A2 [4]值是 “B”。首先,我想如果我尝试编译这段代码,编译器会通过错误,但它说OK。 因此,我显示结果,并看到a2 [4]元素包含“b”字符。 数组如何在C中工作?
我应该学习更深入理解机制的概念吗?
注意:在打印'size_t'值时,使用'“%zu”'而不是''%lu“'。 – chux
注意:使用'char a2 [] =“abcd”; char a1 [] =“efg”;'很可能会促成更深入的理解。 – chux
谢谢** chux **!我必须尝试这种情况。 – csyouk