简单构造一个结构体实例如下:
struct student{char name[20];int score;};
1.指向结构体变量
int main(){struct student st1;scanf("%s %d", st1.name, &(st1.score));printf("%s %d\n", st1.name, st1.score);return 0;}//输入:aha 12//输出:aha 12
2.指针指向结构体成员
int main(){struct student st1, *st2;st2 = &st1;//指向结构体变量scanf("%s", st2->name);scanf("%d", &st2->score);printf("%s %d\n", st1.name, st1.score);printf("%s %d\n", (*st2).name, (*st2).score);printf("%s %d\n", st2->name, st2->score);return 0;}//输入: aha 12//输出:aha 12//aha 12//aha 12
注意:
(1)如果要将一个结构体对象赋给一个结构体指针变量,那么它们的结构体类型必须相同
(2)指针 *st2两边的括号不可省略,因为成员运算符“.”的优先级高于指针运算符“*”,所以如果 *st2 两边的括号省略的话,那么 *st2.name 就等价于 *(st2.name) 了。但是我们可以使用下面两种方式访问结构体成员:
(*指针变量名).成员名
指针变量名->成员名
3.给结构体指针申请空间
int main(){struct student *st2;st2 = (struct student *)malloc(sizeof(struct student));if (NULL == st2) {exit(1);}scanf("%s", st2->name);scanf("%d", &st2->score);printf("%s %d\n", st2->name, st2->score);if (st2) {free(st2);st2 = NULL;}return 0;}//输入: aha 12//输出:aha 12