取消引用指针是否标识了指向的对象或返回存储在其中的值?

时间:2016-04-15 13:04:25

标签: c pointers

我在互联网上看过很多书和答案,如果你取消指针,那么它会给你存储的值。但是如果我们考虑代码:

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.//

所以我的问题是解引用一个指针给它指向的对象或存储在对象中的值是什么?

1 个答案:

答案 0 :(得分:2)

在您的世界中,“对象”和“存储在对象中的值”之间有什么区别?

表达式sizeof (*ptr),可以写成sizeof *ptr,计算*ptr值的大小。由于ptr的类型为int *,因此该值的类型为int

仅仅因为*ptr评估为3并不意味着它与文字3等效,但它是一个不同的表达式。取一个文字的地址是没有意义的,但你不能只替换文字,&*ptrptr相同,而不是&3