我有这个代码:
char *name[] = { "a1", "b2", "c3", "d4" };
printf("%s\n", *name); //the critical line
相关critical line
:
在这种形式中,输出很简单:a1
. 如果我将其替换为critical line
:
printf("%s\n", ++*name);
那么输出是1
. 我认为直到现在一切都很好。
考虑到name
分别是指向第一个字符串的指针"a1"
,我将其替换为critical line
:
printf("%s\n", ++name);
希望我能得到"b2"
结果作为输出。但我得到这个错误:
../src/test.c:32: error: lvalue required as increment operand
.
问题:我不明白为什么++*name
是合法的 -name
是指向第一个字符串的指针 - 而++name
不是。在我看来,++name
应该移动name
到下一个字符串。谁能解释一下我的理解不足在哪里?