指针类型

来源:百度知道 编辑:UC知道 时间:2024/09/20 02:51:43
如下: int i = 0; double d = 0;
int *pi = &i;
double *pd = &d;
pi与pd分别存储了i与d的首地址,可以看出,指针pi与指针pd在内存中占据4个字节的空间,那么当编译器看到pi和pd时,它是如何知道pi指向的是int对象,而pd指向double对象?
因为pi与pd存储的本质就是一个int型的数值,不可能存取其他信息,编译器在通过指针去分析其所指的对象时,需要根据指针的类型去分析对象的内存空间布局,然后再解释对象的内容,但前提是编译器必须知道指针的类型,这怎么解释呢?
请高手回答,谢谢.

对啊,编译器必须知道指针的类型,所以你会声明int *pi,而不是直接声明*pi。int *pi的意思是pi是个指针,它将来要指向一个int类型的变量。你可以让它指向double,比如*pi=&d;编译器对这个表达式进行解释时,会去查找d和pi的声明,若发现他们的类型不匹配,就会给出警告。

编译器肯定会存储更多关于某个变量的信息,不然它辨别不出来两个指针的区别。

你不是已经定义了指针的类型了吗?
一个是int,一个是double
编译器就知道了啊