指针类型所占空间的大小一般都为4个字节,像char*,int*,double*,float*,只要它们是指针类型,不论它们的类型是int还是char还是其它,其指针类型所占内存空间大小都是4个字节,都是这意味着它们之间就没有什么区别吗?
答案肯定是错的,我们说像把一个地址用指针变量去存放起来,那么如果仅仅只是起到存放的作用的话,当然像我们常见的指针都是可行的,因为他们都是在内存空间中占了4个字节,有足够的空间去存放一个4个字节以内的地址。那它们的区别在什么地方呢?
它们的区别就在于当我们想通过解引用去通过指针变量改变原变量时,像初始化一个整型变量a=0x11223344,取地址a,将它放在指针变量pb中,分别用int* pb=&a和char* pc=&a都可以达到存放这个a地址的目的,但是想用*pb,*pc去改变a的值的话,我们知道四个字节的地址存放16进制数的a时,四个字节空间分别存放11,22,33,44,而让*pb=0和让*pc=0它们所得到的结果大不相同,由*pb改变的可以让四个字节空间都变成00,00,00,00,00,而由*pc改变的只能让一个字节空间变成00,即11,22,33,00,这是因为int有四个字节,char只有一个字节,所以int能够改变4个字节空间的指针变量对应的空间,而char只能够改变1个字节空间的指针变量对应的空间,类似的,像double可以改变8个字节空间。
同样的,如果是像通过指针来查看变量地址是,指针类型决定了指针走一步能走多远,