将整数指针转换为整数

Sta*_*123 8 c pointers

尝试下面的代码来检查当我们将整数指针转换为整数时会发生什么.

 #include<stdio.h>
 #include<stdlib.h>
 int main()
 {
         int *p;
         int a;
         p = (int *)malloc(sizeof(int));
         *p = 10;
         a = (int)p;
         printf("%d\n",*p);
         printf("%d \n",a);
         return 0;
 }

 The output is : 10
                 135680008
Run Code Online (Sandbox Code Playgroud)

任何人都可以解释一下这个转换的概念吗?提供与此主题相关的任何链接也会有所帮助.

xto*_*ofl 13

显然,您将指针与指针的内容混淆.

作为对现实世界的类比,你可以说,当我指着一只鸟时,你想把我的食指转换成一只鸟.但是"鸟"和"手指"之间没有关系.

这个比喻转移到你的程序:你的目标指向转换到你intint自身.由于C指针被实现为"存储器单元的数量",并且由于存在大量可用的存储器单元,因此显然(int)p将导致非常大的数量.

铸造是一件令人讨厌的事情.指针非常类似于整数,这是巧合.如果它们被实现为" m 记忆库的 n 地址",你就不会问这个问题,因为没有明显的关系,你就不可能做到这一点.