c - 指针数组的不同声明

标签 c arrays pointers

假设我有一个指针数组:

char *names[] = { "Za" , "John"};

我可以这样声明吗:(?)

char **names = { "Za" , "John" }    

我尝试这样做的原因是我试图递增数组以打印其内容,以便我可以这样做:

printf("%s \n" , *(++names))

所以我可以让 printf 打印“John”。

我尝试了声明 char **names 并在编译时收到以下警告:

test.c: In function ‘main’:
test.c:6:2: warning: initialization from incompatible pointer type [enabled by default]
  char **names = { "Za" , "John"};
  ^
test.c:6:2: warning: (near initialization for ‘names’) [enabled by default]
test.c:6:2: warning: excess elements in scalar initializer [enabled by default]
test.c:6:2: warning: (near initialization for ‘names’) [enabled by default]

P.S 我的 C 文件名是 test.c

谢谢。

最佳答案

只需执行 char **pCurrentName = names;,然后您就可以执行 printf("%s\n", *(++pCurrentName)).

关于c - 指针数组的不同声明,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22430648/

相关文章:

PHP list() 分配 - 在分配或任何其他功能之前修剪?

arrays - 将嵌套对象推送到数组

c++ - 动态创建二维数组的函数

c - 在 C 中对数组进行排序时处理指针

php - 解析 HTTP_ACCEPT_LANGUAGE

c++ - 通过引用传递 void*

c - Y86 1 步停止异常 HLT

c++ - 什么是跳台?

c++ - Macports cgal 不工作!我如何解决它?

c - 需要 C 编译器选项来创建易于逆向的可执行文件来教授逆向