【发布时间】:2012-08-31 11:51:04
【问题描述】:
我有这个代码:
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 移动到下一个字符串。谁能解释一下我的理解不足在哪里?
【问题讨论】: