当前位置: 首页 > news >正文

c语言笔记---结构体

1.什么是结构体

官方的解释是:结构体是一些值的集合,这些值称为成员变量。结构体的每个成员可以是不同类型的变量。首先先举一个关于学生信息的例子,学生包括:姓名(char),性别(char),年龄(int)等信息。

2.定义,创建变量

 结构体定义由关键字 struct 和结构体名组成,结构体名可自行定义。

(1)定义一个结构体

struct Student {  // 结构体名//成员char name[10];int age;char gender[5];
};

注意在创建好结构体之后要加上 ;(分号)

(2)直接创建一个变量

#include<stdio.h>
struct Student {char name[10];int age;char gender[5];
}stu;

结构体尾部创建了一个结构体变量

(3)创建好结构体后创建一个结构体变量

#include<stdio.h>
struct Student {char name[10];int age;char gender[5];
};
struct Student stu;

(4)创建局部变量

#include<stdio.h>
struct Student {char name[10];int age;char gender[5];
};
int main()
{struct Student stu;return 0;
}

在main中创建的是局部变量,只在main函数中有效。

(4)结构体数组

#include<stdio.h>
struct Student {char name[10];int age;char gender[5];
}person[3];  //3个人
//可以直接初始化
#include<stdio.h>
struct Student {char name[10];int age;char gender[5];
}person [3] = {    //也可以不给长度person []{ "zhaosan",18,"男" },{ "qian",19,"男" }{ "sun",20,"男" }
};

3.初始化

(1)直接初始化

#include<stdio.h>
struct Student {char name[10];int age;char gender[5];
};
int main()
{struct Student stu = { "zhaosan",18,"男" };return 0;
}
#include<stdio.h>
struct Student {char name[10];int age;char gender[5];
}stu = { "zhaosan",18,"男" };

(2)逐个赋值

#include<stdio.h>
#include<string.h>
struct Student
{char name[10];int age;char gender[5];
};
int main()
{struct Student stu;strcpy(stu.name, "zhaosan");stu.age = 18;strcpy(stu.gender, "男");return 0;
}

当要赋的值超出最大长度strcpy会造成缓冲区溢出风险,可用strncpy或snprintf

4. 使用

#include<stdio.h>
#include<string.h>
struct Student {char name[10];int age;char gender[5];
}person [3] = {{ "zhaosan",18,"男" },{ "qian",19,"男" }{ "sun",20,"男" }
};
int main()
{printf("age=%d", person[0].age); //打印第一个人的年龄return 0;
}

http://www.lryc.cn/news/592674.html

相关文章:

  • 一个简单的带TTL的LRU的C++实现
  • windows终端美化(原生配置+Oh My Posh主题美化)
  • 数据交易“命门”:删除权与收益分配的暗战漩涡
  • 《通信原理》学习笔记——第四章
  • LP-MSPM0G3507学习--05中断及管脚中断
  • 【DPDK】高性能网络测试工具Testpmd命令行使用指南
  • ELK结合机器学习模型预测
  • mysql not in 查询引发的bug问题记录
  • RV126平台NFS网络启动终极复盘报告
  • Python网络爬虫之selenium库
  • cocosCreator2.4 Android 输入法遮挡
  • Nginx配置Spring Boot集群:负载均衡+静态资源分离实战
  • 【时时三省】(C语言基础)通过指针引用字符串
  • cartorgapher的编译与运行
  • 群晖中相册管理 immich大模型的使用
  • 更适合后端宝宝的前端三件套之CSS
  • Node.js链接MySql
  • 前端笔记之 async/await 异步编程详解
  • 反射机制的登录系统
  • MyUI会员排名VcMember组件文档
  • Java并发编程痛点解析:从底层原理到实战解决方案
  • Axure RP 10 预览显示“无标题文档”的空白问题探索【护航版】
  • 【密码学】1. 引言
  • vue3引入cesium完整步骤
  • 深入Java注解:从内置到元注解与自定义实战指南
  • STM32-CAN
  • 开发避坑短篇(2):uni-app微信小程序开发‘createIndependentPlugin‘模块缺失问题分析与解决方案
  • 初探:C语言FILE结构之文件描述符与缓冲区的实现原理
  • iOS OC 图片压缩
  • CityEngine自动化建模