ABC哪个是正确的呀?解释一下其它的选项为什么错?还有在结构体数组中,s可以看作是s[0]吗?

题干:设有定义:

struct

{

int n;

float x;

} s[2],m[2]= {{10,2.8},{0,0.0}};

则以下赋值语句中正确的是()。

A

s[0]=m[1];
B

s=m;
C

s.n=m.n;
D

s[2].x=m[2].x;

s不能看成s[0],s相当于结构体数组首地址,是指针类型,而s[0]是结构体数组第一个元素,是结构体类型。应该是s和&s[0]是同一个地址,两者相当
A。正确,两个结构体类型可以直接赋值,因为结构体内没有特殊类型(实现了=操作符的特殊类型也可以赋值)
B。错误,数组不可以直接赋值
C。错误,s和m是数组,不存在这种访问方法
D。错误。s[2]和m[2]是越界访问