发布网友 发布时间: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类型,又不是数组,也不是指针!