我有这样的代码:无法理解为什么这种行为
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
移动到下一个字符串。任何人都可以解释我的内裤缺乏吗?
请参阅我对@ Kerrek的回复的评论。 – artaxerxe