尝试下面的代码来检查当我们将整数指针转换为整数时会发生什么.
#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
显然,您将指针与指针的内容混淆.
作为对现实世界的类比,你可以说,当我指着一只鸟时,你想把我的食指转换成一只鸟.但是"鸟"和"手指"之间没有关系.
这个比喻转移到你的程序:你的目标指向转换到你int到int自身.由于C指针被实现为"存储器单元的数量",并且由于存在大量可用的存储器单元,因此显然(int)p将导致非常大的数量.
铸造是一件令人讨厌的事情.指针非常类似于整数,这是巧合.如果它们被实现为" 第 m 个记忆库的第 n 个地址",你就不会问这个问题,因为没有明显的关系,你就不可能做到这一点.