假设有定义struct date {int year;int month;int day; }a[10]; 以下引用第i个元素成员变量 year的方法,正确的有: a[i].year (a+i)->year *(a+i).year *a+i.year
时间: 2024-04-25 16:26:51 浏览: 129
正确的引用方式是 a[i].year。因为 a 是定义的结构体数组,a[i] 表示数组中第 i 个元素,使用点运算符 . 来引用该元素的成员变量 year。其他选项都是错误的写法。*(a+i).year 的写法也可以访问到 year 成员变量,但是不如 a[i].year 直观易懂。*a+i.year 的写法是错误的,会先进行指针运算,导致语义错误。
相关问题
假设有定义: typedef struct date {int year; int month; int day; }DATE; 要定义上述类型的变量a,以下 定义正确的是: struct date a; DATE a; date a; struct DATE a;
正确的定义方式是 DATE a; 或者 date a; (大小写不敏感)。这是因为 typedef 声明的是类型别名,将 struct date 重命名为 DATE,因此可以直接使用 DATE 来定义变量,也可以使用原始的 struct date 来定义变量,但是需要加上 struct 关键字。其他选项都是错误的写法。
struct date{ int year; int month; //结构成员 *类型声明无需赋值;//基本类型/构造类型/指针类型 int day; }; int main(){ struct date a = {2001,4,7}; //a是标识符(具体内存空间),a代表就是一个日期;a表示结构变量 a.year=2001; printf("%d %d %d\n",a.year,a.month,a.day); struct date*p = &a; p -> year = 1000; printf("%d",p->year); 给这段代码添加一个使用数组用struct调用 }
可以通过定义一个结构体数组来调用结构体:
```
#include <stdio.h>
struct date{
int year;
int month;
int day;
};
int main(){
struct date a[2] = {{2001, 4, 7}, {2021, 9, 20}};
// a[0] 表示第一个结构体,a[1] 表示第二个结构体
a[0].year = 2001;
printf("%d %d %d\n", a[0].year, a[0].month, a[0].day);
struct date *p = &a[1];
p->year = 2022;
printf("%d", p->year);
return 0;
}
```
以上代码使用了一个包含两个结构体的数组,分别对其进行了修改和访问。
阅读全文
相关推荐
















