我已經閱讀了很多書籍和互聯網上的答案,說如果你取消了一個指針,那麼它會給你存儲的價值。但是,如果我們考慮代碼:取消引用指針是否標識正在指向的對象或返回存儲在其中的值?
int x = 3,*ptr;
ptr = &x;
printf("%d",*ptr); /*print value in x*/
printf("%d",sizeof(*ptr));/*gives sizeof of x*/
printf("%u",&*ptr);/*give address of x*/
如果取消引用是給存放在X值,那麼我們將有:的sizeof(3)和& 3不作任何意義,但如果它是返回變量x本身那麼一切纔有意義:& X:給出x地址的sizeof(X):給出x的大小和
printf("%d",x); //print value in x.//
所以我的問題是什麼呢解引用指針給由它的值或指向的對象存儲在對象中?
sizeof只是運算符,[編譯期間評估](http://stackoverflow.com/a/2615205/5601069) - 所以你沒有'x'的地址。因此它打印指針的大小。 – Enkelli
@Enkeli:它不總是編譯時評估。 – Olaf
指針指向分配的對象,而不是值。 – Lundin