我明白为什么这不起作用:关于指针数组为char
int main(int argc, char *argv[]) {
char *names[] = {"name1", "name2", "name3", "name4"};
int i = 0;
while (i++ <= 3) {
printf("%s\n", *names++);
}
}
错误:
a.c: In function 'main':
a.c:16: error: wrong type argument to increment
shell returned 1
这是因为我想增加一个数组变量(而不是指针)。请不要介意错误消息中的行号,我有很多评论代码,上面和下面是我在这里提出的。
不过,我不明白为什么这段代码的工作:
void myfunc(char *names[]) {
int i = 0;
while (i++ <= 3) {
printf("%s\n", *names++);
}
}
int main(int argc, char *argv[]) {
char *names[] = {"name1", "name2", "name3", "name4"};
myfunc(names);
}
我们怎样才能增加在myfunc()
names
?它仍然是一个局部数组变量,在myfunc()
。 有人可以帮忙吗?
谢谢。
在第二种情况下,它衰减为指针并且指针可以增加。 – ameyCU
你声明你知道第一个例子的问题的根源。那么,你是否明白代码需要以'#include'语句作为前缀?如果编译时启用了所有的警告,编译器会告诉你有关1)警告:未使用的argc参数2)警告:未使用的argv参数3)错误:作为增量运算符需要左值。如果你解决了这些问题,代码就可以正常工作。 –
user3629249