指针

作者: 逍遥_9353 | 来源:发表于2018-05-27 08:27 被阅读33次

    C语言细节之指针

    1、 后缀++和--比*的优先级高,所以*P++与*(P++)等价。它自增P并返回P自增前所指向的变量数值。

        前缀++和--与*的优先级相同,但是按从右向左结合。所以++*P与(*P)++等价。

    2、对于char *p;

          int a[10];

          P = a;

          不可以使用((int *)P)++。因为(int *)p只可以作右值。要达到目的可以用P = (char *)((int *)P + 1);

          所以要注意,类型转换只可以做右值。

    3、用指针调用函数的形式。

        int func(){}

        int (*fp)() = func;

        既可以使用*fp(),也可以使用fp()调用函数func();

    C语言细节之空指针

    1、空指针表示"未分配"或者"尚未指向任何地方"。它与未初始化的指针不同,未初始化的指针可能指向任何地方。每种指针类型都要一个空指针,而不同类型的空指针的内部可能不尽相同。

    2、一般给指针赋值0就是将指针设为空指针(等同设为NULL)。但是0作为函数参数,传给指针时需要对0作类型转换。

    3、可以使用if(p)等同于if(p != 0),但是这种风格不好。

    4、NULL实际上是一个定义在 stdio.h中定义的宏,代表空指针常数,赋给指针,等同于0。欲处理器把所有NULL都转换为0

    总结:两条规则:

      (1)当需要使用空指针常数,使用0或者NULL

      (2)当在函数调用中使用0或者NULL用作参数,把它转换成被调

          函数需要的指针类型。

    相关文章

      网友评论

        本文标题:指针

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