【发布时间】:2018-10-27 17:49:29
【问题描述】:
语句之间有什么区别
int *p = (int*) i; and int *q=&i;
这是整个程序
#include<stdio.h>
int main(){
int i;
int *p = (int*) i;
printf("\n p is %d ",p);
int *q = &i;
printf("\n q is %d ",q);
return 0;
}
得到的输出是
p is 22092
q is 1002476148
我认为这里 p 和 q 都存储了 i 的地址,但是它们显示了不同的值,有人可以解释为什么会这样吗?
【问题讨论】:
-
所以如果 (int *) i 返回 i 中的值,那么这个 (int *) 的实际用途是什么,比如它的使用位置
-
因为
i是默认初始化的,它将包含随机值,该值也被存储到指针p,这就是你得到两个值的原因。
标签: c pointers memory-address