gpt4 book ai didi

c++ - 指向数据结构成员的指针

转载 作者:行者123 更新时间:2023-11-27 22:40:40 24 4
gpt4 key购买 nike

我最近阅读了有关 pointers to data structures 的 C++ 教程的一部分,其结构定义为:

struct movies_t {
string title;
int year;
};

movies_t * pmovie;

它提到了 (*pmovie).title*(pmovie.title) 的不同之处。有人可以解释为什么吗?

最佳答案

您不能只是互换语法,因为两者的含义不同。

第一种情况,(*pmovie).title 表示 pmovie 是一个指针,您正在取消引用它,然后从该对象中提取“title”字段。等效/更简单的语法是 pmovie->title。

你的第二个案例说,“Pmovie 是一个对象,而 title 是指向某物的指针。我想取消引用该指针。”

例如:

struct Movie {
std::string title;
};

Movie movie;
Movie * pmovie = &movie; // here pmovie is a pointer to a movie
pmovie->title = "Trading Places";
(*pmovie).title = "Trading Places"; // same meaning as line above

对比

struct Movie {
std::string * title;
};

std::string title;
Movie pmovie; // here "pmovie" is an insanely named variable for a non-ptr
pmovie.title = &title;

*(pmovie.title) = "V For Vendetta"; // Note, pmovie not a ptr, title is

显然,第二种情况很荒谬,而且确实是一个糟糕的接口(interface)(你不希望在你的对象接口(interface)中使用原始指针,无论对象是内部还是外部拥有的。)我只举了一些例子来说明区别是什么。希望您只遇到第一种情况下的代码。

关于c++ - 指向数据结构成员的指针,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49244626/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com