- >和之间的区别.在一个结构?

Sam*_*Sam 21 c struct

如果我有一个类似的结构

struct account {
   int account_number;
};
Run Code Online (Sandbox Code Playgroud)

然后做什么有什么区别

myAccount.account_number;
Run Code Online (Sandbox Code Playgroud)

myAccount->account_number;
Run Code Online (Sandbox Code Playgroud)

或者没有区别?

如果没有区别,你为什么不用这个.符号而不是->->看起来很乱.

rmk*_*rmk 40

- >是一个简写(*x).field,其中x是指向类型变量的指针struct account,并且field是结构中的一个字段,例如account_number.

如果你有一个指向结构的指针,那么说

accountp->account_number;
Run Code Online (Sandbox Code Playgroud)

比...简洁得多

(*accountp).account_number;
Run Code Online (Sandbox Code Playgroud)


bac*_*hus 22

您可以使用.,当你处理变量.您可以使用->,当你正在处理的指针.

例如:

struct account {
   int account_number;
};
Run Code Online (Sandbox Code Playgroud)

声明一个类型的新变量struct account:

struct account s;
...
// initializing the variable
s.account_number = 1;
Run Code Online (Sandbox Code Playgroud)

声明a为指向struct account:

struct account *a;
...
// initializing the variable
a = &some_account;  // point the pointer to some_account
a->account_number = 1; // modifying the value of account_number
Run Code Online (Sandbox Code Playgroud)

使用a->account_number = 1;是一种替代语法(*a).account_number = 1;

我希望这有帮助.


Rob*_*obᵩ 7

根据左侧是对象还是指针,使用不同的表示法.

// correct:
struct account myAccount;
myAccount.account_number;

// also correct:
struct account* pMyAccount;
pMyAccount->account_number;

// also, also correct
(*pMyAccount).account_number;

// incorrect:
myAccount->account_number;
pMyAccount.account_number;
Run Code Online (Sandbox Code Playgroud)