指针类型探索

概念:指针是一个新的数据类型,带  N 个  *  号的数据类型,任何一个数据类型后面都能跟上  N  个 * 号;

 声明:

         1)char**  x ;               char***  x;              char*******    x;

         2)short** y;                short***  y;              short********    y;

         3)int**    z;                  int***        z;            int********    z;

         4)double**    k;          double***    k;        double********    k;


赋值:

        1)简化写法:int    x ;    x = 10 ;    

        2)完整写法:int *   x ;    x = ( int * ) 10 ;  告诉编译器怎样看待后面的值10,*号类型赋值必须用完整写法。


特征:

        1)所有指针类型的 [ 数据宽度 ] :4 字节(32bit)

指针类型-数据宽度:4字节【32bit】

        2)++ 或者 --(++或--操作,到底加几还是减几?

        答:砍掉一个*号,是什么类型宽度,那么++和--就自加或自减砍掉一个*号后的类型宽度)

情况一:执行前,都是100(0x64h)
情况一:执行后,分别自加了1、2、4个字节


情况二:执行前,都是100(0x64h)
情况二:执行后,都自加了 4 字节

         3)+  上  或者   -  去,一个整数


情况一:执行前,都是100(0x64h)


情况二:执行后,都自加了 4 字节


        4)两个指针类型:求差值

                答:可以相减,但是*号的数量和类型必须相同,相减后除以类型的宽度(判断类型宽度就砍掉一个*号后的);


        5)指针类型之间:做大小比较

                答:可以相减,但是*号的数量和类型必须相同。



指针高级用法(※ 星行之旅 ※),将指针运算转换成数组寻址模式

char    x;                                  

char* p1;    char** p2;    char*** p3;    char**** p4;    char***** p5;    char****** p6;

x = *p1 = *(p1+0) = p1[ 0 ]

x = *(*(p2+1)+3) = p2[ 1 ][ 3 ]    内存寻址--->    +4  +3

x = *(*(*(p3+1)+2)+3) = p3[ 1 ][ 2 ][ 3 ]   内存寻址 --->    +4  +8    +3


最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容