首页 > 其他分享 >C语言第六篇-结构体

C语言第六篇-结构体

时间:2024-05-14 23:08:03浏览次数:22  
标签:stu1 struct 定义 C语言 Student 第六篇 变量 结构

一、结构体的概念

1.结构体是什么?

在实际的应用中,往往变量的类型复杂多变,我们仅仅使用C语言内置的类型无法准确的去定义变量,所以引出了结构体这个概念。也就是说,为了描述复杂类型的个体,只用C语言基础的内置类型不能完整的表述,而结构体就可以很好的解决这个问题。
结构体本质上还是一种数据类型,但它可以包括若干个“成员”,每个成员的类型可以相同也可以不同,也可以是基本数据类型或者又是一个构造类型

结构体定义

在定义结构体的时候,大括号最后一定不要忘记分号:‘;’
我们举个简单的例子:我们定义一个名为Student的结构体,该结构体的成员包括:姓名,学号,性别,年龄,总成绩等。

//struct是一个
struct Student   //定义一个名为Student的结构体
{
	char name[20];  //姓名
	int id;  //学号
	char sex;  //性别(1:男  0:女)
	int age;  //年龄
	int score;  //总成绩
};

结构体变量的初始化

struct Student stu1;  //若不给结构体初始值,则里面的值均为【随机值】
struct Student stu2 = { "Feizhang" };  //若给结构体只赋值一部分,则后面的全部赋为0
struct Student* stup = &stu1;  //定义一个结构体类型的指针stup,指向stu1
struct Student* stuq;  //理论上stuq为随机值,但在这里指向0Xcccccccc(Debug模式下会优化为cccccccc)
struct Student Stu_arr[10];  //定义一个结构体数组,若不给初始值,则为随机值

二、结构体的使用

1.如何去使用结构体?

1.1结构体的普通变量如如何访问结构体成员
结构体普通变量如何访问其成员:C语言规定,结构体的普通成员可以通过运算符“点.”去访问其成员,例如:

struct Student stu1 = { "Bulv", 20, 1001, 1, 90 };  //定义结构体变量stu1并初始化
struct Student stu2 = { "Feizhang", 22, 1002, 1, 95 };  //定义结构体变量stu2并初始化
stu1.id = 1003;  //通过结构体变量stu1去访问成员id,并将其值修改为1003
printf("%s\n", stu1.name);  //打印学生stu1的姓名
printf("%d\n", stu1.age);  //打印学生stu1的年龄
strcpy_s(stu1.name, 10, "caopi");  //修改stu1的第一个变量name的值(char类型不能直接赋值)

2.结构体数组

在上面的例子中,我们都只是定义一个结构体变量,但在实际中,结构体变量不止一个,所以就需要一个数组来去存储。对比一般数组的定义,结构体数组也可以用相同的方式去定义、使用。下面举个例子:

struct Student  //定义一个名为Student结构体
{
	char name[20];  //姓名
	int age;  //年龄
	int id;  //学号
}stu[5];  //定义一个结构体数组stu[5],其长度是5,相当于要记录5个学生的信息

image

标签:stu1,struct,定义,C语言,Student,第六篇,变量,结构
From: https://www.cnblogs.com/zh718594493/p/18192481

相关文章

  • C语言第五篇-指针
    什么是指针指针是内存中一个最小单元的编号,也就是地址平时口语中说的指针,通常指的是指针变量,是用来存放内存地址的变量指针变量我们可以通过&(取地址操作符)取出变量的内存其实地址,把地址可以存放到一个变量中,这个变量就是指针变量#include<stdio.h>intmain(){prin......
  • 2-HTML语法规范和基本结构
    基本语法概述HTML标签是由尖括号包围的关键字,例如<html>。HTML标签通常是成对出现的,例如<html>和</html>,我们称为双标签。标签对中第一个是开始标签,第二个是结束标签。有些特殊的标签必须是单个标签,例如<br/>,我们称为单标签。标签关系包含关系点击查看代码<body>......
  • 《Linux内核完全注释》学习笔记:2.1 Linux内核模式和体系结构
    2.1Linux内核模式和体系结构操作系统主要由4部分组成:硬件、操作系统内核、操作系统服务用户应用程序图2-1操作系统组成部分用户应用程序:指那些字处理程序、互联网浏览器程序或用户自行编制的各种应用程序;操作系统服务程序:指向用户提供的服务,被看作是操作系统部分功能......
  • 数据结构概述
    数据结构定义我们如何把现实中大量而复杂的问题以特定的数据类型和特定的存储结构保存到主存储器(内存)中,以及在此基础上为实现某个功能(比如查找某个元素,删除某个元素,对所有元素进行排序)而执行的相应操作,这个相应的操作也叫算法数据结构=个体+个体的关系算法=对存储数据的......
  • 第六篇scrum冲刺
    作业所属课程软工2024作业要求自我介绍+软工5问作业目标学习使用一些好用实用的工具。熟悉作业提交的方法和格式。督促我翻阅课本。明确自己的学习方向任务分块为以下部分素材寻找界面设计确定可用api数据解析具体实现测试今日将解析的数据部署到......
  • 数据结构:红黑树
    满足五条性质:1.根节点一定是黑色2.叶节点一定是黑色空心3.节点非黑即红4.红色节点孩子节点一定是黑色的即不会出现连续的红色节点5.任意一个节点到叶节点路径上黑色节点数量一样多 右旋操作:1.该节点和左孩子断开连接2.左孩子替代......
  • win32下汇编代码结构学习
    通常win32下三种不同的调用模式,不同版本的编译器,对汇编出来的代码都会代理一些差别。__cdecl是默认的方式,采用外平栈。__stdcall,采用内平栈。__fastcall,因为采用2个寄存器传参,所以多于2个参数后也会用外平栈的方式。传入的第一个参数位置在ebp+8,后面依次加4个字节,即第n个参数的......
  • 实验4 C语言数组应用编程
    实验任务1task1_11#include<stdio.h>2#defineN434voidtest1(){5inta[N]={1,9,8,4};6inti;78//输出数组a占用的内存字节数9printf("sizeof(a)=%d\n",sizeof(a));1011//输出int类型数组a中每个元......
  • 分享一个树级结构数据,自动生成各个层次节点的code代码方法,优势在于可以在获取到子级的
    publicclassOrgCodeHierarchy{privatestaticfinalintMAX_SEQUENCE=999;privatestaticfinalStringALPHABET="ABCDEFGHIJKLMNOPQRSTUVWXYZ";privatestaticMap<String,Boolean>existingOrgCodeMaps=newHashMap<>()......
  • Windows编程系列:PE文件结构
    最近在参考OpenShell为任务栏设置图片背景时,发现里面使用了IATHook,这一块没有接触过,去查资料的时候发现IATHook需要对PE文件结构有一定的了解,索性将PE文件结构的资料找出来,系统学习一下。 PE文件结构PortableExecutable(PE),可移植的可执行文件。在Windows平台下,所有的可执......