" - >"和"."之间的区别.在C.

Atu*_*pta 4 c

可能重复:C中的
箭头运算符( - >)用法

我想弄清楚"."之间的区别.和" - >"C语言中的数据访问风格.例如.

struct div{
    int quo;
    int rem;
};
Run Code Online (Sandbox Code Playgroud)

1)使用" - >"

struct div *d = malloc(sizeof(struct div));
d->quo = 8/3;
d->rem = 8%3;
printf("Answer:\n\t Quotient = %d\n\t Remainder = %d\n-----------\n",d->quo,d->rem);
Run Code Online (Sandbox Code Playgroud)

2)使用"."

struct div d;
d.quo = 8/3;
d.rem = 8%3;
printf("Answer:\n\t Quotient = %d\n\t Remainder = %d\n-----------\n",d.quo,d.rem);
Run Code Online (Sandbox Code Playgroud)

我得到两个案件的相同输出.

答案:商数= 2剩余= 2

这两种方法如何在内部运作?什么时候应该使用哪一个?我尝试在互联网上搜索但没有多大帮助.任何相关链接也表示赞赏.

他们在内存中的存储也有什么区别吗?

Riv*_*asa 11

基本区别是:

. is the member of a structure
-> is the member of a POINTED TO structure
Run Code Online (Sandbox Code Playgroud)

因此,.当直接访问结构中的变量时使用.但是->当您通过指向该结构的指针访问结构的变量时使用.

假设你有结构a:

struct a{
    int b;
}
Run Code Online (Sandbox Code Playgroud)

然而,说c是指针,a然后你知道:c = (*a).因此->被用作某种情况的替代品..所以(*a).b,你可以做c->b,而不是做,完全相同.


Pub*_*bby 7

-> 是根据的定义 .

也就是说,a->b等同于(*a).b你显然会得到相同的结果.

-> 存在是为了方便.