1.d[2]是一个结构体数组,长度是2,每个元素都是一个结构体
2.结构体里有x,y两个成员
3.使用{}给结构体初始化,{1,3}给d[0],{2,7}给d[1],因为x定义在前,y定义在后,所以1给x,3给y
最终d[0].x=1;d[0].y=3;d[1].x=2;d[1].y=7;
那么代入表达式,3/1*2计算一下就行了
d是一个结构体数组,有2个元素,每个元素里面包含2个数字,分别是 x 和 y。d[0] 是访问它的第一个元素,d[0].y是第一个元素里面的 y,值为 3。*/的优先级相同,从左往右算:3 / 1 * 2 = 6
对于一般的函数而言,参数列表都是固定的,而且各个参数之间用逗号进行分开。这种函数在调用的时候,必须严格按照参数列表中参数的个数进行传参,否则编译器就会报错。
int add(int a, int b) //该函数定义时,参数有两个,所以在调用时只能传入两个参数
{
int c = a + b;
return c;
}
int main()
{
int sum1 = 0;
int sum2 = 0;
int sum3 = 0;
sum1 = add(1); //报错:error C2198: “add”: 用于调用的参数太少
sum2 = add(1, 2);
sum3 = add(1, 2, 3); //报错:warning C4020: “add”: 实参太多
return 0;
}
我们应该都注意到,库函数 printf(); 的参数并不是固定的,传入的参数个数不同,但该函数仍然可以成功执行。如下:
int a = 20;
int b = 30;
printf("10\n");
printf("%d\n",a);
printf("%d %d\n",a, b);
//printf函数的定义如下:
//int __cdecl printf(_In_z_ _Printf_format_string_ const char * _Format, ...);
//可以看出参数列表中的参数并没有完全给出
所以,具有可变参数列表的函数就是:函数定义时,参数列表中的的参数不完全定义;调用该函数时,可以根据实际情况传入多个参数,且可以成功完成其函数功能。而该函数的参数列表就是可变参数列表。