A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

一、结构体指针
1、概念
一个指针变量当用来指向一个结构体变量时,称之为结构指针变量。结构指针变量中的值是所指向的结构变量的首地址。通过结构体指针即可访问该结构体变量。这与数组指针和函数指针的情况是相同的。

2.定义和初始化

  1. //先定义一个结构体
  2. struct Student{
  3.     int num;
  4.     char *name;
  5.     char sex;
  6.     float score;
  7. };
  8.     //定义一个结构体指针
  9.     struct Student stu;
  10.     struct Student * student = &stu;
  11.     stu.score = 90.0f;
  12.     stu.num = 102;
  13.     stu.sex = 'F';
  14.     stu.name = "Amoe";
  15.     //方法一:用.符号访问
  16.     printf("num:%d, name:%s, sex:%c, score: %0.2f\n\n",(*student).num, (*student).name, (*student).sex, (*student).score);
  17.     //方法二:用->符号访问,只要当用结构体指针的时候才可以使用这个操作符
  18.     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)成员也可以又是一个结构,即构成了嵌套的结构

【注意】结构体嵌套:结构体定义的里面有【其他结构体】
    不能嵌套自己的变量,但是可以嵌套本身结构体的指针变量。
例如:
  1. //先定义一个结构体
  2. struct Student{
  3.     int num;
  4.     char *name;
  5.     char sex;
  6.     float score;
  7.     struct Student * student;//不会报错,可以嵌套该结构体的指针变量
  8.     struct Student stu;//会报错,不能嵌套该结构体的变量
  9. };
复制代码



2)定义并初始化嵌套结构体

例如:
  1. #include <stdio.h>
  2. //先定义一个结构体
  3. struct Student{
  4.     int num;
  5.     char *name;
  6.     char sex;
  7.     float score;
  8.     struct Student * st;//不会报错,可以嵌套该结构体的指针变量
  9. };
  10. int main(int argc, const char * argv[])
  11. {
  12.     //定义并初始化嵌套结构体
  13.     struct Student stu = {102,"Alle",'M',89.0f,NULL};
  14.     struct Student student = {101,"Amos",'M',90.0f, &stu};
  15.    
  16.     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);
  17.    
  18.     return 0;
  19. }
复制代码
打印结果:
Student number:101, name:Amos, sex:M, score:90.00

student: number:102, name:Alle, sex:M, score:89.00

0 个回复

您需要登录后才可以回帖 登录 | 加入黑马