关于结构体的使用

定义和使用结构体

建立结构体类型

C语言的结构体即是由不同类型的数据组成的组合型的数据结构,在其他高级语言中称为“记录(record)”。
声明一个结构体类型的一般形式为
struct 结构体名
  {成员表列};

结构体类型名struct + 结构体名 组成

结构体名是由用户指定的,以区别于其他结构体

成员表列 也叫 域表,每个成员的是结构体中的一个。成员命名规则和变量名相同。其他的结构体也可做为该结构体的变量。

如:
struct Person {
  char name[20]; //姓名
  int age; //年龄
  char gender; //性别
  float height; //身高
};

定义结构体类型变量

1.先声明结构体类型,再定义该类型的变量

struct 结构体名
  {成员表列};

struct 结构体名 结构体变量名;

如:
先声明:
struct Person {
  char name[20] //姓名
  int age; //年龄
  char gender; //性别
  float height; //身高
};
再和定义其他变量一样定义结构体变量
struct Person person1, person2;

2.在声明类型的同时定义变量

struct 结构体名
  {成员表列
  }结构体变量名表列;

如:
struct Person {
  char name[20]; //姓名
  int age; //年龄
  char gender; //性别
  float height; //身高
} person1, person2;

3.不指定类型名而直接定义结构体类型变量

struct
  {成员表列
  }结构体变量名表列;

这指定了一个无名的结构体类型,不能再以此结构体类型去定义其他变量,所以会被用于此结构体确定不会再被用于其他变量时。
如:
struct {
  char name[20]; //姓名
  int age; //年龄
  char gender; //性别
  float height; //身高
}Tonytony;

结构体变量的初始化和引用

(1)在定义时初始化

  struct Person person1 = {.name = “LiHua”};

(2)引用结构体变量中的成员值

  person1.name = “LiHua”;
  person1.age = 20;

(3)同类型的结构体变量可以互相赋值

person1 = person2;

(4)不能整体读入结构体变量

scanf("%s, %d, %c, %f", &person1);

结构体数组

定义结构体数组也可以
struct 结构体名
  {成员表列};

struct 结构体名 数组名[长度];

struct Person {
  char name[20]; //姓名
  int age; //年龄
  char gender; //性别
  float height; //身高
};
struct Person person[3];

或者

struct 结构体名
  {成员表列
  };数组名[长度]

struct Person {
  char name[20]; //姓名
  int age; //年龄
  char gender; //性别
  float height; //身高
} person[3];

结构体指针

指向结构体变量的指针

指向结构体的指针既可以指向结构体变量,也可以指向结构体数组中的元素。指针变量的基类型必须与结构体变量相同
如:

struct Person *pe;
pe = &person;
person.age = 20;
printf(“age is %d”, (*pe).age);

输出为 age is 20

还可以用 pe->age 代替 (*pe).age

" -> " 代表箭头, pe->age 表示 pe 指向结构体变量中的成员 age

当 pe 指向一个结构体变量 person 时,以下3种用法等价。

  1. person.age
  2. (*pe).age
  3. pe->age
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值