一道奇怪的指针应用
#include <iostream>#include <malloc.h>
using namespace std;
int main()
{
int a = 100;
int *p = &a;
int c = (int)p;
int *p2 = (int*)c;
printf("%d\n",*p2); //结果是100,不知为什么,谁能帮做一下前几步的注释
return 0;
} #include <iostream>
#include <malloc.h>
using namespace std;
int main()
{
int a = 100;
int *p = &a;
// 假设a的地址是0x0011FF
// 那么p的值就是0x0011FF
int c = (int)p;
// 所以c的值就相当于p的值: 0x0011FF
int *p2 = (int*)c;
// 所以p2的值就相当于c的值:0x0011FF
printf("%d\n",*p2); // 0x0011FF中的值是100
return 0;
} 你这么想就明白了
int main()
{
int a = 100;
int *p = &a;
int *p2 = (int*)(int)p;
// 上面这条语句就相当于下面这条语句
int *p2 = p
printf("%d\n",*p2);
return 0;
} lhgzbxhz 发表于 2020-7-10 09:06
你这么想就明白了
https://fishc.com.cn/thread-174465-1-1.html
大神帮看看这个,指针学的我好晕。
页:
[1]