【发布时间】:2015-11-10 09:31:26
【问题描述】:
#include <stdio.h>
void printa(char *a[])
{
for (int i = 0; i < 3; ++i) {
printf("%s\n", *a);
a++;
}
}
int main(void)
{
char *a[] = {"The first", "The second", "The third"};
for (int i = 0; i < 3; ++i) {
printf("%s\n", *a);
a++; // error: cannot increment value of type 'char *[3]'
}
printa(a); //OK
return 0;
}
因此,我的问题是为什么 main 函数中的代码 a++ 会导致编译错误(错误:无法增加 'char *[3]' 类型的值)。但是,如果我将指针数组传递给函数printa 并在该指针上调用a++,它就可以完美运行。
谢谢,
【问题讨论】:
-
A 是一个数组,其中每个元素都是一个指向 char 的指针....所以 a++ 会失败
标签: c arrays pointers arguments