一、结构体指针 1、概念 一个指针变量当用来指向一个结构体变量时,称之为结构指针变量。结构指针变量中的值是所指向的结构变量的首地址。通过结构体指针即可访问该结构体变量。这与数组指针和函数指针的情况是相同的。
2.定义和初始化
- //先定义一个结构体
- struct Student{
- int num;
- char *name;
- char sex;
- float score;
- };
- //定义一个结构体指针
- struct Student stu;
- struct Student * student = &stu;
- stu.score = 90.0f;
- stu.num = 102;
- stu.sex = 'F';
- stu.name = "Amoe";
- //方法一:用.符号访问
- printf("num:%d, name:%s, sex:%c, score: %0.2f\n\n",(*student).num, (*student).name, (*student).sex, (*student).score);
- //方法二:用->符号访问,只要当用结构体指针的时候才可以使用这个操作符
- printf("num:%d, name:%s, sex:%c, score: %0.2f",student->num, student->name, student->sex, student->score);
复制代码
打印结果: 方法一 num:102, name:Amoe, sex:F, score: 90.00 方法二 num:102, name:Amoe, sex:F, score: 90.00
二、结构体嵌套使用
1.结构体嵌套 1)成员也可以又是一个结构,即构成了嵌套的结构
【注意】结构体嵌套:结构体定义的里面有【其他结构体】 不能嵌套自己的变量,但是可以嵌套本身结构体的指针变量。 例如: - //先定义一个结构体
- struct Student{
- int num;
- char *name;
- char sex;
- float score;
- struct Student * student;//不会报错,可以嵌套该结构体的指针变量
- struct Student stu;//会报错,不能嵌套该结构体的变量
- };
复制代码
2)定义并初始化嵌套结构体
例如: - #include <stdio.h>
- //先定义一个结构体
- struct Student{
- int num;
- char *name;
- char sex;
- float score;
- struct Student * st;//不会报错,可以嵌套该结构体的指针变量
- };
- int main(int argc, const char * argv[])
- {
- //定义并初始化嵌套结构体
- struct Student stu = {102,"Alle",'M',89.0f,NULL};
- struct Student student = {101,"Amos",'M',90.0f, &stu};
-
- printf("Student number:%d, name:%s, sex:%c, score:%0.2f\nstudent: number:%d, name:%s, sex:%c, score:%0.2f",student.num,student.name,student.sex,student.score,student.st->num,student.st->name,student.st->sex,student.st->score);
-
- return 0;
- }
复制代码打印结果: Student number:101, name:Amos, sex:M, score:90.00
student: number:102, name:Alle, sex:M, score:89.00
|