可能重複:
void * arithmetic增加一個空指針
嗨,大家好我有一個關於在C.首先指針增加一個小問題,讓我們說,我知道ptr++
,其中ptr
是一個指針將增加與sizeof(*ptr)
一樣多。另外我知道在做*ptr
時,編譯器知道它必須從內存中獲取sizeof(*ptr)
字節。
第二部分幫助我理解爲什麼以下甚至不編譯:
int main(){
int a = 3;
void* b = &a;
printf("%d\n", *b);
return 0;
}
因爲編譯器不知道void
類型的變量的大小。不過,我有點困惑下面的代碼:
int main(){
int a = 3;
void* b = &a;
printf("%p\n", b);
b++;
printf("%p\n", b);
}
所以,我的兩個問題是:
如何能夠知道編譯器多少應該增加
b
?爲什麼它只增加一個字節(至少在我的機器是一個字節)?
http://stackoverflow.com/questions/3922958/void-arithmetic – cnicutar
第一段代碼的'printf'行的所有尾部空白是什麼?啊! – pmg