C语言一个指针问题

来源:百度知道 编辑:UC知道 时间:2024/05/16 10:40:41
int a=112,b=-1;
float c=3.14;
int *d=&a;
float *e=&c;

d的值为100,e的值为108,这是为什么?

#include<iostream>
using namespace std;
int main(){
int a=112;
float c=3.14;
int *d=&a;
float *e=&c;
cout<<"d="<<d<<" e="<<e<<endl;
system("pause");
}
我的d=0x22ff74 e=0x22ff70 ,其实d和e每次输出的结果可能不同,因为每次内存分配的空间不同也地址不同。
其实d和e的值都是地址值,上面的两个数就是两个16进制的数。但我不知道你想输出的是d和e的什么值,应该不代码写全便于我们去理解。

d和e应该都是一个地址值。。。
顺便问下,你的机器是多少位的?怎么寻址位才这么点。。。
32位的机器一个地址就应该是32位的。。。

d为指针表示地址,
100为的d在内存中的地址偏移量,你是按整形输出的话。十六进制为64H,计算机里用二进制表示为01100100.
要想输出d的内容,printf("%d",*d);

这里的d和e是指针变量,
int *d=&a; ==>int *d; d=&a;
d存储的是a的地址
你输出d e ,其实输出的是a和c的地址
想输出a和e的值的话。。是要输出*d和 *e的

是两个连续的地址值,也许是随机的

最好把程序写完整,,才好查错在那里