有struct student{int age;int num;)stu1,*p;p=&syu1; 对结构变量stu1中成员age的正确引用是A.(*p).age B.p->age C.stu1.age D.student.age
时间: 2024-04-02 10:32:30 浏览: 65
根据给出的结构体声明语句 `struct student{int age; int num;} stu1, *p; p = &stu1;`,我们可以得知:
- `stu1` 是一个 `struct student` 类型的结构体变量。
- `p` 是一个指向 `struct student` 类型的结构体变量的指针,它指向变量 `stu1`。
因此,结构变量 `stu1` 中成员 `age` 的正确引用方式是选项 B. `p->age`。
选项 A. `(*p).age` 的引用方式也是正确的,表示通过指针 `p` 访问结构体变量 `stu1` 的成员 `age`。
选项 C. `stu1.age` 的引用方式也是正确的,表示直接访问结构体变量 `stu1` 的成员 `age`。
选项 D. `student.age` 的引用方式是错误的,因为 `student` 是结构体类型名,不是结构体变量名,应该改为 `struct student.age`。
综上所述,选项 B. `p->age` 是结构变量 `stu1` 中成员 `age` 的正确引用方式。
相关问题
若有下列定义,则以下不合法的表达式是( )。 struct student{ int num; int age; }; struct student stu[3] = {{101, 20}, {102, 19}, {103, 20}}, *p = stu; a. (p++)->num b. p++ c. (*p).num d. p = &stu.age
a. 先取出p所指向的对象的num,然后p指向下一个对象,返回101。
b. p指向下一个对象,返回stu + 1。
c. 先取出p所指向的对象的num,返回101。
d. stu是一个数组名,不能取出他的属性。应该改为p = &stu[0].age。返回一个指向age的指针。
struct Student
`struct Student` 是一个自定义的结构体类型,它包含了学生的一些基本信息,例如学号、姓名、性别、年龄、生日和地址等。可以通过以下方式定义一个 `struct Student` 类型的变量:
```c
struct Student {
int num;
char name[20];
char sex;
int age;
struct Date birthday;
char addr[30];
};
struct Student stu1; // 定义一个结构体类型的变量stu1
```
其中,`num` 表示学号,`name` 表示姓名,`sex` 表示性别,`age` 表示年龄,`birthday` 表示生日,`addr` 表示地址。可以通过点号 `.` 来访问结构体变量中的成员,例如:
```c
stu1.num = 1001;
strcpy(stu1.name, "张三");
stu1.sex = 'M';
stu1.age = 20;
stu1.birthday.month = 1;
stu1.birthday.day = 1;
stu1.birthday.year = 2000;
strcpy(stu1.addr, "北京市海淀区");
```
这样就可以给 `stu1` 变量赋值了。另外,结构体类型的变量也可以通过指针来访问,例如:
```c
struct Student *p;
p = &stu1;
p->num = 1002;
strcpy(p->name, "李四");
p->sex = 'F';
p->age = 21;
p->birthday.month = 2;
p->birthday.day = 2;
p->birthday.year = 2001;
strcpy(p->addr, "北京市朝阳区");
```
这样就可以通过指针 `p` 来访问 `stu1` 变量中的成员了。需要注意的是,结构体类型的变量在定义时需要先定义结构体类型,然后再定义变量。
阅读全文