我似乎无法理解一个问题。我错过了什么?
请考虑以下内容
int main(int argc, char *argv[]) {
while ( *argv ) {
printf("argv[] is: %s\n", *argv);
++argv;
}
return 0;
}
这会打印出argv的每个值。所以像./example arg1 arg2
这样的命令行将输出以下内容:
`argv[] is: ./example`
`argv[] is: arg1`
`argv[] is: arg2`
现在考虑以下内容(我遇到了麻烦):
int main(void) {
char *days[] = {
"Sunday",
"Monday",
"Tuesday"
};
while ( *days ) {
printf("day is %s\n", *days);
*days++;
}
return 0;
}
如果我尝试编译,就会出现错误无法增加'type'的值
如果我将*days++
更改为(*days)++
,它就可以编译。 如果我运行它,它会一直运行并最终失败,出现bus error
。
但是,它不会遍历所有days[]
的值。 我甚至尝试在天数数组中放置一个空指针'\0'
和"\0"
,但没有效果。
我错过了什么吗?
++argv;
和*days++;
的区别! - alk