1.定义和使用结构体变量

结构体的基础知识

结构是一些值的集合,这些值称为成员变量。结构的每个成员可以是不同类型的变量。

自己建立结构体类型

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

struct 结构体名

{成员表列}:↓

注意:结构体类型的名字由一个关键字 struct 和结构体名组合而成的(例如 struct Student)结构体 名是由用户指定的,又称 "结构体标记"(structure tag),以区别于其他结构体类型。上面的结构体声明中Student 就是结构体名(结构体标记)

类型名 成员名:

"成员表列"也称为"域表",每一个成员是结构体中的一个域 。成员名命名规则与变量名相同

声明结构体的形式

结构体的初始化

代码详解:

struct point {int x;int y;
}; p1;  //声明类型的同时定义变量p1
struct point p2;//定义结构体变量p2
struct stu {char name[20]; //名字int age;  //年龄};
struct stu s = { "lisi",25 };//初始化struct Node {int data;struct point p;struct Node* next;}; n = { 10,{4,5},NULL };//结构体的嵌套初始化struct Node n2 = { 20,{5,6},NULL };//结构体嵌套初始化

2. 结构体成员的访问

结构体变量访问成员
结构变量的成员是通过点操作符
访问的。点操作符接受两个操作数。
例如:

 我们可以看到 s 里面有成员 name 和age 

那我们如何访问呢?

struct S s;
strcpy(s.name, "zhangsan");//使用.访问name成员
s.age = 20;//使用.访问age成员
结构体指针访问指向变量的成员
有时候我们得到的不是一个结构体变量,而是指向一个结构体的指针。
那该如何访问成员。
如下:

3.结构体传参

话不多说直接上代码!

struct p {int data[900];int n;};
struct p s = { {4,3,2,1},900 };
//结构体传参
void point1(struct p s) {printf("%d %d\n", s.data,s.n);
}
//结构体地址传参
void point2(struct p* s1) {printf("%d %d\n", s1->data, s1->n);
}
int main() {point1(s);//传结构体point2(&s);//传地址return 0;
}

对于上面的两种函数 point 1和 point2 哪种函数好一些呢?

首选 point2 函数

原因:

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

结论:

结构体传参的时候,要传结构体的地址。
以上就是 小王同学给大家整理的一些初阶版 认识结构体啦
后面会给大家 带来进阶版的(肝疼.jpg)
 
制作不易 还希望友友们多多三连支持 就是对小王同学最大的进步和动力!
  

C语言——结构体(初阶版)相关推荐

  1. C语言结构体,超简单入门版!

    同学们好啊,我是401郭明,这篇博文我将带大家好好分析C语言结构体,帮大家在C语言方面快速打好基础,本篇博文主要针对没有C语言基础或者C语言基础不好的同学. 为了方便大家理解,我这篇文章将会讲的十分之 ...

  2. C语言 | 结构体数组

    C语言结构体数组概述 一个结构体变量中可以存放一组有关联的数据,如一个学生的学号.姓名.成绩等数据,如果有10个学生的数据需要参加运算,显然应该用数组,这就是结构体数组. 结构体数组与之前介绍的数值型 ...

  3. 阵列c语言,C语言结构体阵列的定义

    C语言结构体阵列的定义以下文字资料是由(历史新知网www.lishixinzhi.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! C语言结构体阵列的定义 1.C语言结构体阵列的定义 ...

  4. c语言结构体编辑学生成绩管理,C语言基于结构体的学生信息管理系统实现

    宋福英 摘  要: 中国高校为保证学生信息安全,各分院的学生信息都在一个相对封闭的闭环内共享.中国高校在校生人数逐年递增,给高校的信息管理带来不小压力.C语言兼具高级语言和汇编语言的特点,简洁.紧凑. ...

  5. c语言结构体成员变量私有化,C语言中结构体变量私有化详解

    C语言中结构体变量私有化详解 背景介绍 操作系统 : CentOS7.3.1611_x64 gcc版本 :4.8.5 什么是结构体? 在C语言中,结构体(struct)指的是一种数据结构,是C语言中聚 ...

  6. c语言结构体变量所占字节计算,【C语言】结构体占用字节数及存储与空间分配...

    我们都知道在数据类型中,char类型占1个字节,short占2个字节,int占4个字节,long占8个字节等等. 在计算结构体大小时需要考虑其内存布局,结构体在内存中存放是按单元存放的,每个单元多大取 ...

  7. ARM汇编语言实现peek()_ARM汇编之访问C语言结构体数据

    前言 本文的写作目的在于装逼,没有要产生实际价值的意思. 前几天在做编译器的项目,有一个项目团队成员一直在问我ARM汇编能不能读C语言的结构体.我心想,我这生成ARM汇编的代码是用C++写的呀,又不是 ...

  8. C语言结构体和结构体数组示例 - Win32窗口程序演示

    C语言结构体和结构体数组的使用: /* C结构体和结构体数组示例,by bobo */#include <windows.h>LRESULT CALLBACK WndProc (HWND, ...

  9. C语言结构体-大小,对齐,填充,使用及其他

    C语言结构体-大小,对齐 C语言中的结构体(struct)的定义 在C语言中,最常用的数据结构就是结构体了,结构体也是其它数据结构(比如链表等)的基础,结构体的使用非常简单. 比如,定义一个结构体: ...

最新文章

  1. linux xz 解压initrd.img,2016-8-28 linux基础学习——压缩解压缩及归档 while脚本
  2. crt查看开机日志_电脑开机要几分钟?这几个关键的设置你肯定没有做好
  3. linux shell 判断一个命令是否存在
  4. npoi css,NPOI颜色对照表
  5. 用VC进行COM编程所必须掌握的理论知识
  6. opengl加载显示3D模型ZAE类型文件
  7. Waiting for table metadata lock
  8. 你还记得20年前的语文课本吗?
  9. Redis的高可用详解:Redis哨兵、复制、集群的设计原理,以及区别
  10. buffer string builder简单说明
  11. sde java_arcgis SDE for Java
  12. 关于PHP上传文件时配置 php.ini 中的 upload_tmp_dir
  13. Debian6 / 7 Web服务器环境搭建LNMP一键安装包 | 问题汇总与解答
  14. 如何正确地使用arXiv平台
  15. BEGINNING SHAREPOINT#174; 2013 DEVELOPMENT 第9章节--client对象模型和REST APIs概览 client对象模型(CSOM)基础...
  16. 最小生成树:Kruskal算法
  17. nginx HTML网页乱码
  18. html合并边框线,css中border-collapse属性设置表格边框线的方法
  19. Vue3.0教程 (一)vue脚手架安装和搭建
  20. python正态分布拟合曲线怎么打印出中位数值,如何用对数正态分布函数拟合数据...

热门文章

  1. 最大后验(Maximum a Posteriori,MAP)概率估计详解
  2. 【测控电路】ADDA转换电路
  3. 1万条xml文件的写入,附加杂类知识
  4. 怎么跳槽?这七步走完,你完全可以面试大厂了
  5. 数值策划的自我修养(二):用VBA批量获取指定目录下文件的名字
  6. 论Java selenium 上传文件,图片的正确姿势
  7. 基于SSM大学生心理健康咨询系统
  8. C语言,实现字符的渐变,动态化。
  9. 对2023015期双色球号码的可能性进行计算
  10. [转载]14-28岁必看,还算青年的你该用什么手机