我有一個問題,我對我得到的輸出有點困惑。有人能幫我解決這個問題嗎?指針初始化爲一個常數值 - 分段錯誤
`
#include <stdio.h>
int main()
{
int *i = 5;
char *c = i[1];
printf("%c", *c);
}
`
將它正確編譯沒有錯誤。如果它編譯,它會在運行時給出分段錯誤。如果是,由於哪一行。根據我的主要()的前兩行是好的。 printf語句給出了分段錯誤,但我無法證明它的合理性。這裏int *我被初始化爲一個常量。所以我可以將'我'指向其他位置,但不能改變*我。我將'i'的第二個字節分配給char * c,但在這裏我不會改變* i。那麼爲什麼打印* c給出了分段錯誤。這是我的看法。尋找更好的解釋。
這可能是功課嗎? – moooeeeep 2012-07-17 20:07:45
@moooeeeep它不是作業:)它的面試問題。我知道會出現分段錯誤,但我無法給出令人滿意的解釋。 – Kahaly 2012-07-17 21:06:08