如何给结构体指针取值
时间: 2024-05-19 10:10:34 浏览: 8
给结构体指针取值的方法有两种:
第一种方法是使用箭头操作符(->),通过指针变量指向的结构体变量的成员。语法如下:
指针变量名->成员名
例如,如果有一个结构体指针变量p指向一个结构体变量student,可以使用p->成员名来取得该成员的值。
第二种方法是使用星号和圆括号(*p)。这种方法需要先使用*p获取结构体指针指向的结构体变量,然后再使用点操作符(.)来访问该结构体变量的成员。语法如下:
(*指针变量名).成员名
例如,如果有一个结构体指针变量p指向一个结构体变量student,可以使用(*p).成员名来取得该成员的值。
这两种方法是等价的,两种方法都可以用来取得结构体指针指向的结构体变量的成员的值。根据个人的习惯选择使用其中的一种方法即可。
相关问题
c语言结构体指针取值
好的,以下是用C语言的指向结构体指针,从键盘输入3名学生信息,包含学号、姓名、三门课程成绩的代码示例:
```
#include <stdio.h>
#include <stdlib.h>
#define MAX_STUDENTS 3
struct student {
int id;
char name[20];
float score[3];
};
int main() {
struct student *ptr;
int i;
ptr = (struct student*) malloc(MAX_STUDENTS * sizeof(struct student));
for (i = 0; i < MAX_STUDENTS; i++) {
printf("请输入第%d个学生的信息:\n", i+1);
printf("学号:");
scanf("%d", &(ptr+i)->id);
printf("姓名:");
scanf("%s", (ptr+i)->name);
printf("三门课程成绩:");
scanf("%f %f %f", &(ptr+i)->score[0], &(ptr+i)->score[1], &(ptr+i)->score[2]);
}
printf("\n学生信息如下:\n");
for (i = 0; i < MAX_STUDENTS; i++) {
printf("学号:%d\n", (ptr+i)->id);
printf("姓名:%s\n", (ptr+i)->name);
printf("三门课程成绩:%.2f %.2f %.2f\n", (ptr+i)->score[0], (ptr+i)->score[1], (ptr+i)->score[2]);
}
free(ptr);
return 0;
}
```
这段代码中,我们定义了一个结构体 `student`,包含学号、姓名和三门课程成绩。然后我们使用指向结构体的指针 `ptr`,动态分配了一个大小为 `MAX_STUDENTS` 的结构体数组。
接着,我们使用 `for` 循环,从键盘输入每个学生的信息,包括学号、姓名和三门课程成绩。注意,我们使用了指向结构体的指针 `ptr` 来访问每个学生的信息。
最后,我们使用 `for` 循环,输出每个学生的信息,包括学号、姓名和三门课程成绩。
最后,我们使用 `free` 函数释放了动态分配的内存。
希望这个示例能够帮助你理解如何使用指向结构体的指针从键盘输入学生信息。
c 结构体指针的取值 赋值
结构体指针的取值和赋值可以通过操作符 "->" 和 "*" 来完成。
1. 取值操作符 "->":用于访问结构体指针所指向的结构体成员。
示例:
```
struct Person {
char name[20];
int age;
};
struct Person *p = (struct Person*)malloc(sizeof(struct Person));
strcpy(p->name, "Jack"); // 相当于 (*p).name = "Jack";
p->age = 20; // 相当于 (*p).age = 20;
```
2. 解引用操作符 "*":用于访问结构体指针所指向的结构体。
示例:
```
struct Person {
char name[20];
int age;
};
struct Person *p = (struct Person*)malloc(sizeof(struct Person));
strcpy((*p).name, "Jack"); // 相当于 p->name = "Jack";
(*p).age = 20; // 相当于 p->age = 20;
```