C语言之结构体

  • 为什么需要结构体
  1. 避免过度重复,模拟复杂事务,将基本类型组合在一起(相关信息整合在一起)。
  • 什么是结构体

根据实际需要,把一些基本类型组合而形成的新的数据类型,这个叫做结构体

长相:学生信息:

struct student

{

int age;

double height;

char sex;

}

三、定义结构体

1.#include<stdio.h>

//第一种方式:先定义,在主函数中写变量名

struct student {

int age;

double height;

char sex;

};

//定义时写变量名

struct student2 {

int age;

double height;

char sex;

}st2;

//第三种方式

struct  {

int age;

double height;

char sex;

}st3;

int main() {

struct student st = { 12,1.73,'f' };

}

推荐使用第一种方式定义结构体

四、如何使用结构体

1.赋值和初始化

定义的同时可以整体赋值

如果定义完之后,只能单个赋值

 

  1. 如何取出结构体变量中的每一个成员

 

第一种方式:

结构体变量名.成员名

st.age

第二种方式:指针变量名->成员名

指针型:struct *pst = &st

psr->age;计算机内部会转化为(*pst).age,一种硬性规定。也等价于st2.age

 

  1. 结构体变量的运算

不能相互加减,不能相互乘除,但可以相互赋值

for example:

struct student st1;

struct student st2;

//错误:st1 +st2,st1-st2,st1/st2,st1*st2

//正确:st1 = st2

  1. 结构体变量和结构体变量指针作为函数参数传递的问题

推荐使用结构体指针变量作为函数参数来传递

举例:动态构造存放学生信息的结构体数组

#include<stdio.h>

#include<stdlib.h>

struct Student {

int age;

float score;

char name[100];

};

void f(struct Student** p,int n);

void g(struct Student** p,int len);

int main()

{

int len;

printf("input len:");

scanf_s("%d", &len);

struct Student* a = (struct Student*)malloc(len * sizeof(struct Student));

if (a == NULL) {

return 0;

}

f(a,len);

free(a);

a = NULL;

}

void f(struct Student* p,int len) {

int i = 0;

for (i; i < len; i++)

{

printf("input age:");

scanf_s("%d", &p[i].age);

printf("input score:");

scanf_s("%f", &p[i].score);

printf("input name:");

scanf_s("%s", p[i].name,100);

}

g(p, len);

}

void g(struct Student* p,int len)

{

int i = 0;

for (i; i < len; i++)

{

printf("age:%d\n", p->age);

printf("score:%.2f\n", p->score);

printf("name:%s\n", p->name);

}

}

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值