• 点操作符和箭头操作符的异同


    最近转到BREW平台了,前段时间遇到了点操作符和箭头操作符的问题,原来也以为访问结构体成员时都一样,后来编译的时候一直报错才仔细研究了一下,搜到下面这篇文章:

    博客最近长草了,罪过罪过,没有独立博客之前应该定期更新这里。

    ————————

    一直以为这两个是没有什么区别的,可以相互替换,今天又翻了一下《C语言核心技术》,明白了其中的奥妙。

    相同点:两个都是二元操作符,其右操作符是成员的名称。

    不同点:点操作符左边的操作数是一个“结果为结构”的表达式;

                    箭头操作符左边的操作数是一个指向结构的指针。

    主要看左边的操作符,左边是指针用箭头,否则用点。

    举例说明:

    #include <string.h>

    Song_t  song1,song2,                        //两个Song_t类型的对象

                    *pSong = &song1;              //和一个指向Song_t的指针

    strcpy(song1.composer,"Ottma Liebert");

    song1.duration = 251;

    song1.published.year = 1998;

    if((*pSong).duration >180)

         printf("The song is more than 3 mimutes long.\n");

    --最后一句也可以改写为:

    if(pSong->duration > 180) ....

    另外一点体会:如果一个函数的传入参数是结构体,且需要该结构体作为返回值的时候,必须采用指针传递的方式,其中对结构体赋值必须使用箭头运算符。

    int  iSetValue(Song_t *pSong)

    {

      strcpy( pSong ->composer,"123");

      pSong->duration = 251;

     ...

    }

    http://blog.csdn.net/taric_ma/article/details/7397362

    -------------- Now, Or Never. --------------
  • 相关阅读:
    SKAction类
    SpriteKit所有的类
    Reachability下载地址
    IOS学习教程
    SpriteKit游戏开发
    APP开发者到期续费说明
    Unique Paths
    Letter Combinations of a Phone Number
    Reverse Nodes in k-Group
    Remove Nth Node From End of List
  • 原文地址:https://www.cnblogs.com/levinkai/p/2598084.html
Copyright © 2020-2023  润新知