数组循环当我尝试通过下面的C程序循环,我得到的错误:“段错误:11”Ç - 通过指针
#include <stdio.h>
main() {
int i;
char *a[] = {
"hello",
"how are you",
"what is your name"
};
for (i = 0; a[i][0] != '\0'; i++) {
printf("\n%s", a[i]);
}
}
但是,当我更换测试中for
循环与以下,然后我没有得到一个错误,一切正常。
for (i = 0; i < 3; i++) {
printf("\n%s", a[i]);
}
我会很感激,如果有人可以给我解释为什么测试a[i][0] != '\0'
不起作用,什么我应该做的,而不是。
'for(i = 0; i <3; i ++){...}'::没有前哨。 – wildplasser
我认为其他人都拥有它,但我只是在数组未定义之后添加内存。这实际上是可能的(如果你真的拥有内存之后的内存,那么你的代码将工作的时间是1/256倍)。它完全没有定义。 C中的数组没有内置大小。你必须跟你的数组并行追踪大小,这就是你的<3检查工作的原因。或者,sizeof,你必须跟踪类型。当你将数组传递给一个函数时,它会变成一个指针,然而你失去了sizeof。 – xaxxon