指针声明

来源:百度知道 编辑:UC知道 时间:2024/06/11 15:31:12
既然指然是指向一个变量的内存地址的,而内存地址通常就是16进制表示的
无符号整型,那么无符号整形也就是等于 int了
但是声明成double char编译器也能通过,这样不是就没有意义吗

声明成double 或 char 当然有意义,double或char指的是内存地址内存放的变量的类型而不是内存地址的类型。
例如:
int a,*p;
p=&a;
p是一个指针也就是地址,固然这个地址如你所说是“16进制表示的
无符号整型”,但我们要研究的不是这个地址本身,而是这个地址内存放的数据。若存放的数据是int型的,则声明的指针类型就是int,若地址内存放的数据是double型的,当然声明的指针类型也是double型的了。
例如:
double a,*p;
p=&a;
无论指针声明成什么类型,都不代表指针本身的类型,而是表示这个指针内存放的数据的类型。

内存地址是16进制表示的无符号整型没错,但是无符号整形不等于 int。

比如定义int a=5;a=a+1;,如果你输出a的值,那么它就是6。但是如果你定义一个整型的指针 int *p=(int *)0x04;p=p+1;,你会发现p的值是0x08,而不是0x05。因为指针增加的是所值类型的大小,每种指针都不一样。绝对不能做这样的事:int a=5;int *b;b=a;,根本不能这么做的。

只能说在某种系统和编译器条件下指针的存储大小跟int是相同的。

至于后半截,不知道你在说啥。。