当前位置: 首页 > 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.dtcms.com/a/286571.html

相关文章:

  • 浏览器元素定位工具-项目源码免费领取
  • 萤石摄像头C++SDK应用实例
  • 前端笔记之 async/await 异步编程详解
  • 面试高频题 力扣 695.岛屿的最大面积 洪水灌溉(FloodFill) 深度优先遍历 暴力搜索 C++解题思路 每日一题
  • Python网络爬虫之selenium库
  • 第九章 基础设施更新工程
  • 语音控制操作板:人机交互的未来趋势
  • 企业级异常处理方案:Spring Boot自定义异常全局拦截实战
  • 多线程的认识
  • 深入Java注解:从内置到元注解与自定义实战指南
  • 变量提升知识总结
  • 前后端数据交互,关于表单数据传输问题
  • 图机器学习(11)——链接预测
  • Linux和git常用命令
  • TF-IDF(Term Frequency - Inverse Document Frequency)
  • RFID技术赋能智慧物流:实现搬运环节的精准化与高效化
  • 【PTA数据结构 | C语言版】多叉堆的上下调整
  • 【LeetCode 2163. 删除元素后和的最小差值】解析
  • 上市公司-企业超额商誉数据(2005-2023年)-实证数据
  • 《C++继承深度引擎:从内存布局到多态全景拆解》​
  • 飞算科技:以创新科技引领数字化变革,旗下飞算 JavaAI 成开发利器
  • Linux Master 知识库 —— 致 Linux 系统工程师
  • 通信算法之294:LTE系统中的整数倍频偏估计
  • 太阳辐射监测站:洞察太阳能量的科技之眼
  • 【软件系统架构】系列七:系统性能——路由器性能深入解析
  • 告别宕机!Ubuntu自动重启定时任务设置(一键脚本/手动操作)
  • [Raspberry Pi]如何將無頭虛擬顯示器服務(headless display)建置在樹莓派的Ubuntu桌面作業系統中?
  • 汽车免拆诊断案例 | 07款丰田Hilux启动故障
  • Redis——MoreKey
  • 深入理解进程地址空间:虚拟内存与进程独立性