我理解为什么这不起作用:
int main(int argc, char *argv[]) {
char *names[] = {"name1", "name2", "name3", "name4"};
int i = 0;
while (i++ <= 3) {
printf("%s\n", *names++);
}
}
Run Code Online (Sandbox Code Playgroud)
错误:
a.c: In function 'main':
a.c:16: error: wrong type argument to increment
shell returned 1
Run Code Online (Sandbox Code Playgroud)
这是因为我试图增加一个数组变量(而不是一个指针).请不要介意错误消息中的行号,我在上面和下面列出了很多注释代码.
但是,我不明白为什么这段代码有效:
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);
}
Run Code Online (Sandbox Code Playgroud)
我们怎样才能增加names的myfunc()?它仍然是一个本地数组变量myfunc().有人可以帮忙吗?
谢谢.
在1 日例子names是一个数组.数组不能递增.
在第二个例子中names是一个指针.指针可以递增.
为什么第二个例子编译的背景:
[]函数声明中的变量定义中的A 与(另一个)相同*.
所以这
void myfunc(char * names[]);
Run Code Online (Sandbox Code Playgroud)
相当于
void myfunc(char ** names);
Run Code Online (Sandbox Code Playgroud)
后者很明显这里names不是数组而是指针.
| 归档时间: |
|
| 查看次数: |
66 次 |
| 最近记录: |