objective-c - 这个 ' ->' 在 c/objective-c 中是什么意思?

标签 objective-c c syntax

我在查看一些代码时遇到了一些我不知道其含义的语法。 “->”是什么意思?

-(void) getTransformValues:(struct transformValues_*) tv
{
    tv->pos         = positionInPixels_;
    tv->scale.x     = scaleX_;
    tv->scale.y     = scaleY_;
    tv->rotation    = rotation_;
    tv->skew.x      = skewX_;
    tv->skew.y      = skewY_;
    tv->ap          = anchorPointInPixels_;
    tv->visible     = visible_;
}

最佳答案

箭头运算符 ('->') 与使用点运算符 ('.') 的位置相同,但带有指向结构而不是该结构对象的指针。

typedef struct _Person {
    char name[200];
    unsigned int age;
} Person;

如果您创建了该结构的对象,您将使用点运算符来访问其成员:

int main()
{
    Person p1;

    strcpy( p1.name, "Baltasar" );
    p1.age = 36;
}

但是,如果您指向一个结构的指针,而不是结构本身,您只能使用箭头运算符,或者更复杂一点的点运算符:

int main()
{
    Person p1;
    Person *ptrPerson = &p1;    // ptrPerson points to p1

    strcpy( ptrPerson->name, "Baltasar" );
    ptrPerson->age = 36;
}

正如我上面所说,您仍然可以使用点运算符:

 int main()
    {
        Person p1;
        Person *ptrPerson = &p1;    // ptrPerson points to p1

        strcpy( (*ptrPerson).name, "Baltasar" );
        (*ptrPerson).age = 36;
    }

当然,所有这些讨论都涉及更多主题,例如指针、堆等。希望对您有所帮助。

关于objective-c - 这个 ' ->' 在 c/objective-c 中是什么意思?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6346224/

相关文章:

objective-c - tvOS 应用程序 - UIAlertController 与 UIAlertAction 崩溃

objective-c - Swift ViewController 与 Objc 中的 TableView 使 Cell 隐藏

objective-c - 我如何使用 [NSAlert beginSheetModalForWindow :completionhandler:] on older versions of OS X

iphone - 编码时 NSArray 对象会发生什么?

c - 在 AT 命令字符串中使用变量值?

c - 如何将标记化字符串存储到 C 中的数组中

c++ - 不平衡随机数发生器

objective-c - 问号和冒号(? : ternary operator) mean in objective-c?

java - 如何让eclipse像java文件一样处理没有扩展名的文件?

bash - 带变量的括号扩展?