注册 登录
编程论坛 C语言论坛

结构数组的输出

LGD335060087 发布于 2020-03-30 10:55, 1788 次点击
#include<stdio.h>
struct date{    //定义结构
    int year;
    int month;
    int day;
};
struct date* get(struct date*p);
int main()
{
    struct date dates[]={{2020,03,28},{2020,03,29},{2020,03,30}};    //定义结构数组并初始化
    struct date*p=dates;    //定义一个类型为struct date类型的指针并将数组的第一个单元的值赋给指针
    int i;
    for(i=0;i<sizeof(dates)/sizeof(dates[0]);i++){        //遍历输出数组中的结构值
        printf("%d-%d-%d",p[i].year,p[i].month,p[i].day);
    }
    return 0;
}
已经定义了结构指针并且将结构数组赋给指针为什么我通过->不能够访问结构体成员
3 回复
#2
lin51616782020-03-30 10:59
-> 要求左操作数是指针类型的表达式
你可以 (p+i)->year
#3
LGD3350600872020-03-30 13:39
回复 2楼 lin5161678
能具体讲一下为什么(p+i)就变成指针了吗
#4
lin51616782020-03-30 13:50
因为p是指针 所以p+i 就是一个指针

实在看不懂的话 你可以这样理解
p[i] == *(p+i)
&p[i] == &*(p+i)

&* 互逆操作抵消 所以
&p[i] == (p+i)

(p+i) 是一个指针不好理解
&p[i] 是一个指针应该是一目了然的


[此贴子已经被作者于2020-3-30 13:52编辑过]

1