美文网首页
指针类型探索

指针类型探索

作者: Jessica_nasa | 来源:发表于2020-12-28 10:55 被阅读0次

    概念:指针是一个新的数据类型,带  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


    相关文章

      网友评论

          本文标题:指针类型探索

          本文链接:https://www.haomeiwen.com/subject/mjcenktx.html