C语言中a->s[i]与a[i].s的区别

发布网友 发布时间:2022-04-20 09:22

我来回答

5个回答

热心网友 时间:2023-06-27 03:29

a->s[i]是a地址上的结构体成员变量s的第i个元素。
写成非指针的方式,就是a[0].s[i];
这种写法,要求a和s都必须是指针类型。

a[i].s是a地址上,第i个a中的成员变量s。
这种写法,要求a必须是指针,而s不一定是指针。

对比a[0].s[i]和a[i].s,可以看出,这两个是完全不同的意义。

热心网友 时间:2023-06-27 03:30

在函数int fun( STREC *a, STREC *b )
你这里传送参数是指针
当a为指针时 ,a->s[i]等价于(*a).s[i]

如果你改成int fun(STREC a[],STREC b[])
就能用a[i].s了。

热心网友 时间:2023-06-27 03:30

a是结构体数组的数组名,a[i]表示数组中的第i+1个元素,a[i].s表示该结构体中的元素s,这就是 . 运算符的作用
而 -> 运算符则是对指针(即地址)操作而言的:符号左边为指针,右边为结构体元素
故a[i].s <=> (a+i)->s

热心网友 时间:2023-06-27 03:31

a[i].s 是属性的访问方式
a->s[i]是指针的访问方式

热心网友 时间:2023-06-27 03:32

a->s[i]这本来就是错的!s是int类型,又不是数组,也不是指针!

声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com