我有這樣的代碼:無法理解爲什麼這種行爲
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