为什么这个给出在编译后停止运行。它正确地给出了输出,但之后它就损坏了。
#include <stdio.h>
int main() {
char *cities[] = {"Adiyaman","Kayseri","Istanbul"};
int i;
for(i=0; *(cities+i) != NULL; i++) {
printf("%s\n",*(cities+i));
}
return 0;
}
最佳答案
按以下方式定义数组
char *cities[] = { "Adiyaman","Kayseri","Istanbul", NULL };
否则循环将无法工作,因为数组没有等于 NULL 的元素。
按以下方式编写循环会更简单
for ( i = 0; i != sizeof( cities ) / sizeof( *cities ); i++) {
puts( cities[i] );
}
或者如果你想使用指针,那么
for ( char **p = cities; p != cities + sizeof( cities ) / sizeof( *cities ); p++) {
puts( *p );
}
关于c - 指针数组,停止运行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36251764/