怎么做" - >"和"." 成员访问操作在C中有所不同

The*_*edo 5 c

我看了一些资源告诉我如何->.不同,但他们似乎做同样的事情.是否->像结构上的点运算符一样?

Gra*_*row 17

.当你有一个struct ->时使用,当你有一个指向struct的指针时使用.箭头是用于解除引用指针的简短形式,然后使用.:p->field与...相同(*p).field.

  • 值得一提的是,当你在结构中指向**其他**结构时,这非常好.所以你有`a-> b-> c-> d`而不是`(*((*((*a).b)).c)).d`. (6认同)

foo*_*sus 7

它们几乎是一回事.唯一的区别是" - >"指向左侧的结构,而".".采取结构; " - >"在访问struct成员之前对指针进行deferences(即跟随).所以,

struct foo bar;
bar.x = 0;
Run Code Online (Sandbox Code Playgroud)

是相同的:

struct foo bar;
struct foo *diddly = &bar;
diddly->x = 0;
Run Code Online (Sandbox Code Playgroud)