根据定义结构体时的赋值,num数组有两个数组元素,每个数组元素都是结构体变量,都包含想x,y变量。所以:
num[0].x=1
num[0].y=3
num[1].x=2
num[1].y=7
所以num[0].y + num[1].x = 5
定义了一个结构体num,num里有两个元素,x,y
num[2]={1,3,2,7)是一个num数组,长度为2,
num[0]为这个数组中第一个元素,num[2]为第二个元素。
那么num[0]就={1,3}, num[0].x = 1 , num[0].y = 3
num[2] = {2,7} num[1].x = 2
num[0].y + num[1].x = 3+2 = 5
结构体类似一维数组,当然它不是一维数组那么简单,数组里每个元素类型必须一致,结构体可以不一致。但是它的结构很像一维数组。
如果结构体变量本身是个数组,那么就构成一个类似二维数组的结构。
这里就涉及到给二维数组初始化的操作,
假设int num[2][2]={1,2,3,4},这里其实是用一维数组来给二维数组进行赋值
在java和C#这种强类型编程语言里这种赋值是非法的,但C语言是基于指针的,二维数组指针连续,一维数组指针也连续,就可以这样赋值,赋值结果是如下结构:
1,2
3,4
结构体也一样。题目中结构体有2个变量x,y,都是int型,那么就类似int型的一维数组,x在前,y在后,所以x相当于索引0,y相当于索引1,地址连续。
用一维数组给结构体初始化后,值是
x=1,y=3
x=2,y=7
那么num[0].y + num[1].x = 3+2