我明白爲什麼這不起作用:關於指針數組爲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