不一定要相同。
以前的机器有near和far指针,现在的机器一般都是32位指针。也就是说计算机用一个32位地址值寻址。
所以,所有指针其本身是占用long字节大小的。
指针类型其实是告诉编译器怎么解释指针所指向对象。当一个对象有数据成员,或者可以拆分成多部分数据对象时,可以做指针的类型转换。
不一定。
例
int a = 65; 其实就是字符A的ASCII码的值
char * b;
b = (char*)&a;
将b指向a的地址,这个也是可以的,只是需要强制转换一下
这时你可以打印下b的内容
printf("b = [%s]",b);
可以得到 b = [A]
#include
#include
void main()
{
int a = 65;
char * b;
b = (char *)&a;
printf("b = [%s]\n",b);
}
指针类型就是指该指针所指向的实体的类型。要相同。
其实指针本身没有类型,因为都是地址。
指针的定义是通过指针找到内存单元的一个地址并从地址内找到相应的数据
指针的类型是告诉编译器该指针指向什么类型,如果不一致,会导致提取响应数据的时候溢出或缺失。
一个特例是void型指针,他可以指向任何变量,没有类型=所有类型,学好再用,很危险
指针变量赋值、传递是没有问题的,
但是在使用*做引用操作的时候,
类型不同,效果就不同,那肯定有设计逻辑上的错误。