〃忝書γě渎ぐ 发表于 2020-7-10 08:37:46

一道奇怪的指针应用

#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;
}

lhgzbxhz 发表于 2020-7-10 08:37:47

#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;
}

lhgzbxhz 发表于 2020-7-10 09:06:02

你这么想就明白了
int main()
{
    int a = 100;
    int *p = &a;
    int *p2 = (int*)(int)p;
    // 上面这条语句就相当于下面这条语句
        int *p2 = p
    printf("%d\n",*p2);
    return 0;
}

〃忝書γě渎ぐ 发表于 2020-7-10 09:19:37

lhgzbxhz 发表于 2020-7-10 09:06
你这么想就明白了

https://fishc.com.cn/thread-174465-1-1.html
大神帮看看这个,指针学的我好晕。
页: [1]
查看完整版本: 一道奇怪的指针应用