c - 指针数组,停止运行

标签 c pointers for-loop multidimensional-array

为什么这个给出在编译后停止运行。它正确地给出了输出,但之后它就损坏了。

    #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/

相关文章:

c - 取消引用指向不完整类型链表的指针 - C

c - 需要有关fread()的帮助

c - 如何在不更改 C 中原始数组的情况下对指针数组进行排序

C中令人困惑的指针

php - 在多个 for 循环中不断计数

C 编译器 (gcc) 在 100.0 == 100 中将 int 转换为 float 或将 float 转换为 int?

c - Clang、GCC 接受相同功能的不同原型(prototype)

c++ - C++中的指针递增

c - 在 For 循环中使用增量

jquery - 将变量传递给 jquery eq() 函数不起作用