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

【C语言】浅涉结构体(声明、定义、类型、定义及初始化、成员访问及传参)

简单不先于复杂,而是在复杂之后。

89efcc89ac61428db4d5b6639b2bd948.jpeg 

 

目录

1. 结构体的声明 

1.1 结构体的基础知识

1.2 结构的声明 

1.3 结构成员的类型 

1.4 结构体变量的定义和初始化 

2. 结构体成员的访问 

3. 结构体传参 


 

 

1. 结构体的声明 

1.1 结构体的基础知识

结构是一些值的集合,这些值称为成员变量。

 

结构的每个成员可以是不同类型的变量。 

1.2 结构的声明 

 

 fd2f3dd78c4b468893a47b5fa56e5e93.png

 8790543feb584049b435b8c37efcefb3.png

 de25cc4df09645c0906489ba1081787a.png

 

p1 和 p2 是使用 struct Peo 结构类型创建的两个变量

 

p1 和 p2 是全局变量,但尽量不要使用。

 

b1428aa107f041f683e92b967dd2b707.png

 

struct Peo 是类型,不占内存空间。

 

p1 p2 是结构体变量

1.3 结构成员的类型 

结构的成员可以是变量 、数组、指针、甚至是其他结构体。

 

85e7a66dfbb54664a119275d7f694bd1.png

 

1.4 结构体变量的定义和初始化 

72f6509ef5b04a02a791a8b9e24f3ffb.png 

#define _CRT_SECURE_NO_WARNINGS 1
#include<stdio.h>struct Peo
{char name[20];char tele[12];char sex[5];int high;
}p3, p4;struct Peo p5, p6;struct St
{struct Peo p;int num;float f;
};int main()
{struct Peo p1 = { "张三","123456677","男","181" };//结构体变量的初始化struct St s = { {"李四","1233244","女","166"}, 100,3.14f };return 0;
}

 

2. 结构体成员的访问 

结构体变量访问成员

 

结构体变量的成员是通过点操作符(.)访问的。

 

点操作符接受两个操作数。

 

例如:

 cc16bc16d0e7476c9916e9b5c56efaeb.png

结构体指针访问指向变量的成员:

 

有时候我们得到的不是一个结构体变量,而是指向一个结构体的指针。

 

那么该如何访问成员?

如下:

 9562dbc0e15e4a849901e6f2741ad67c.png

 

struct Peo
{
char name[20];
char tele[12];
char sex[5];
int high;
}p3,p4;struct Peo p5, p6;struct St
{
struct Peo p;
int num;
float f;
};void print2(struct Peo* sp)
{
printf("%s %s %s %d\n", sp->name, sp->tele, sp->sex, sp->high);//结构体指针->成员变量
}void print1(struct Peo p)
{
printf("%s %s %s %d\n", p.name, p.tele, p.sex, p.high);}
int main()
{
struct Peo p1 = {"张三","123456677","男","181"};//结构体变量的初始化
struct St s = { {"李四","1233244","女","166"}, 100,3.14f};printf("%s %s %s %d\n", p1.name, p1.tele, p1.sex, p1.high);//结构体变量.成员变量
printf("%s %s %s %d %d %f\n", s.p.name,s.p.tele,s.p.sex,s.p.high,s.num,s.f);print1(p1);
print2(&p1);return 0;
}

 

3. 结构体传参 

 0aba570bbffe47cb81ff2e6e071a6396.png

 

函数传参的时候,参数是需要压栈的。

 

如果传递一个结构体对象的时候,结构体过大,参数压栈的系统开销比较大,所以导致性能的下降。

 

总结:结构体传参的时候,要传结构体变量的地址。

 

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

相关文章:

  • 设计模式-结构型模式之装饰模式
  • 【Chatgpt4 教学】 NLP(自然语言处理)第九课 朴素贝叶斯分类器的工作原理 机器学习算法
  • 基于html+css的图片展示17
  • Jupyter Notebook小知识
  • redis原理及进化之路
  • ai智能写作助手-ai自动写作软件
  • redis持久化
  • Vue项目基于driverjs实现新用户导航
  • 自编码器简单介绍—使用PyTorch库实现一个简单的自编码器,并使用MNIST数据集进行训练和测试
  • redis单机最大并发量
  • MTLAB绘图
  • 自媒体必备素材库,免费、商用,赶紧马住~
  • ESP32设备驱动-BMP388气压传感器驱动
  • 攻防世界-Reversing-x64Elf-100
  • C/C++每日一练(20230419)
  • [自注意力神经网络]Mask Transfiner网络-论文解读
  • 漫画:是喜,还是悲?AI竟帮我们把Office破活干完了
  • ChatGPT的原理分析
  • 在线免费把Markdown格式文件转换为PDF格式
  • R7-5 列车厢调度
  • English Learning - L2 第 16 次小组纠音 弱读和语调 2023.4.22 周六
  • ( “树” 之 前中后序遍历) 145. 二叉树的后序遍历 ——【Leetcode每日一题】
  • NPOI與Crystal report 13.0關於ICSharpCode.SharpZipLib控件版本衝突的解決方法
  • Sass @extend 与 继承
  • 权限控制导入到项目中
  • CVPR2020:训练多视图三维点云配准
  • string容器及其简单使用
  • 芴甲氧羰酰基-氨基-聚乙二醇-巯基吡啶Fmoc-NH-PEG-OPSS
  • 【JavaWeb】Servlet(崔老师版)
  • ITSS服务经理 、服务工程师线上开班在即