关于结构体访问问题.

img


为什么是6啊,这个结构体数组到底是怎么访问的,望各位详细过程。

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

  • 你可以看下这个问题的回答https://ask.csdn.net/questions/7536555
  • 我还给你找了一篇非常好的博客,你可以看看是否有帮助,链接:指针作用、指针与指针变量、指针的定义与初始化、指针赋值
  • 除此之外, 这篇博客: 什么是可变参数列表?以及可变参数列表是如何实现的?中的 1、首先什么是可变参数列表? 部分也许能够解决你的问题, 你可以仔细阅读以下内容或跳转源博客中阅读:
  • 对于一般的函数而言,参数列表都是固定的,而且各个参数之间用逗号进行分开。这种函数在调用的时候,必须严格按照参数列表中参数的个数进行传参,否则编译器就会报错。

    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, ...);
        //可以看出参数列表中的参数并没有完全给出

    所以,具有可变参数列表的函数就是:函数定义时,参数列表中的的参数不完全定义;调用该函数时,可以根据实际情况传入多个参数,且可以成功完成其函数功能。而该函数的参数列表就是可变参数列表。

  • 您还可以看一下 亚马逊云科技培训与认证老师的亚马逊云科技云从业者精要知识(中文讲师定制版)课程中的 第 6 节 - 如何预置亚马逊云科技资源小节, 巩固相关知识点