简要:在 C 语言中,结构体(struct
)是一种用户定义的数据类型,它允许你将不同类型的变量组合成一个单一类型的实体。结构体变量可以通过点运算符 (.
) 或者箭头运算符 (->
) 来访问和引用其成员。具体使用哪种引用形式取决于结构体变量是直接声明的还是通过指针访问的。
结构体引用的两种形式
点运算符 (.
)
当你有一个结构体变量时,可以使用点运算符 (.
) 来引用该结构体中的成员。
示例1
#include <stdio.h>
struct Person {
char name[50];
int age;
};
int main() {
struct Person person1;
// 通过点运算符引用结构体成员
person1.age = 30;
printf("Age: %d\n", person1.age);
return 0;
}
箭头运算符 (->
)
当你有一个指向结构体的指针时,可以使用箭头运算符 (->
) 来引用该结构体中的成员。
示例2
#include <stdio.h>
struct Person {
char name[50];
int age;
};
int main() {
struct Person person2;
struct Person *pPerson2 = &person2; // 定义结构体指针并初始化
// 通过箭头运算符引用结构体成员
pPerson2->age = 25;
printf("Age: %d\n", pPerson2->age);
return 0;
}
何时使用哪种形式?
- 点运算符 (
.
):用于直接通过结构体变量访问成员。 - 箭头运算符 (
->
):用于通过指向结构体的指针访问成员。
例题
程序通过定义学生结构体变量,储存了学生的学号,姓名和三门课的成绩。函数fun的功能是对形参b所指结构体变量中的数据进行修改,最后在主函数中输出修改后的数据。例如 b所指变量t中的学号,姓名,三门课的成绩分别是 10002、"zhangQi"、93.00、85.00、87.00 ,修改后输出t中的数据应为:10004、"LiJie"、93.00、85.00、87.00。
#include <stdio.h>
struct student {
long sno;
char name[10];
float score[3];
};
void fun(struct student* b)
{
/**********found**********/
b__1__= 10004;
/**********found**********/
strcpy(b__2__, "LiJie");
}
main()
{
struct student t = { 10002,"ZhangQi", 93, 85, 87 };
int i;
printf("\n\nThe original data :\n");
printf("\nNo: %ld Name: %s\nScores: ", t.sno, t.name);
for (i = 0; i < 3; i++) printf("%6.2f ", t.score[i]);
printf("\n");
/**********found**********/
fun(&t);
printf("\nThe data after modified :\n");
printf("\nNo: %ld Name: %s\nScores: ", t.sno, t.name);
for (i = 0; i < 3; i++) printf("%6.2f ", t.score[i]);
printf("\n");
getchar();
}
代码中的1,2应该填写什么呢?
答案:
b->sno= 10004;
strcpy(b->name, "LiJie");
结论
在 C 语言中,根据结构体变量的使用方式(直接声明或指针访问),可以使用点运算符(.
)或箭头运算符(->
)来引用结构体成员。使用合适的运算符可以确保正确访问结构体中的成员。