iis服务器助手广告广告
返回顶部
首页 > 资讯 > 后端开发 > 其他教程 >深入浅出理解C语言初识结构体
  • 328
分享到

深入浅出理解C语言初识结构体

2024-04-02 19:04:59 328人浏览 薄情痞子
摘要

目录1.定义和使用结构体变量结构体的基础知识自己建立结构体类型struct 结构体名类型名 成员名:声明结构体的形式结构体的初始化  2. 结构体成员的访问3.结构体传参1

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语言初识结构体的文章就介绍到这了,更多相关C语言 结构体内容请搜索编程网以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程网!

--结束END--

本文标题: 深入浅出理解C语言初识结构体

本文链接: https://www.lsjlt.com/news/140572.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • 深入浅出理解C语言初识结构体
    目录1.定义和使用结构体变量结构体的基础知识自己建立结构体类型struct 结构体名类型名 成员名:声明结构体的形式结构体的初始化  2. 结构体成员的访问3.结构体传参1...
    99+
    2022-11-13
  • C语言入门篇--初识结构体
    目录1.为什么要有结构体2.结构体的定义2.1结构体类型的定义2.2定义结构体普通变量及访问2.3定义结构体指针变量及访问1.为什么要有结构体 (1)之前int、char等类型描述的...
    99+
    2022-11-12
  • C语言深入回顾讲解结构体对齐
    目录结构体对齐问题结构体嵌套结构体强制内存对齐拓展求结构体成员的偏移量结构体对齐问题 1、知识点的引入: struct data1 { char a;//1B int...
    99+
    2022-11-13
  • 深入浅析C/C++语言结构体指针的使用注意事项
    主要内容 结构体的使用 - 定义,赋值,结构体指针 结构体作为函数参数的使用 指针的使用 代码内容重点 1.结构体的使用 - 定义,赋值,结构体指针 2....
    99+
    2022-11-12
  • C语言深入浅出解析二叉树
    目录树概念及结构相关概念树的表示树在实际中的运用(表示文件系统的目录树结构)二叉树概念及结构概念需要注意的特殊二叉树二叉树的性质二叉树的存储结构顺序存储链式存储总结树概念及结构 树是...
    99+
    2022-11-13
  • C语言深入讲解指针与结构体的使用
    目录1 啥是指针1.1指针与指针变量1.2总结2 指针和指针类型2.1指针+-整数3 野指针3.1 野指针的成因1指针未初始化2指针越界访问3指针指向的空间释放3.2 如何避免野指针...
    99+
    2022-11-13
  • C语言由浅入深理解指针
    目录1. 相关概念2. 指针的定义方法3. 指针的分类4. 指针和变量的关系5. 指针与数组的关系6. 指针的运算1. 相关概念 操作系统给每个存储单元分配了一个编号,从ox00 0...
    99+
    2022-11-13
  • C++深入浅出探索数据结构的原理
    目录一、前言二、C++的数据结构三、定义结构四、访问结构成员五、结构作为函数参数六、指向结构的指针一、前言 因为C++的数据结构很多,很复杂,一篇文章根本讲不到所有的数据结构。即使写...
    99+
    2022-11-13
  • 深入浅出理解C语言指针的综合应用
    目录指针是什么?指针变量  使用指针变量的例子通过指针引用数组&数组名vs数组名野指针野指针成因1.指针未初始化2.指针越界访问如何避免野指针指针运算指针是什么? ...
    99+
    2022-11-13
  • C语言全面梳理结构体知识点
    目录一、什么是结构体二、结构体的定义三、结构体变量的定义四、结构体变量的初始化五、结构体变量的赋值六、引用结构体变量中的成员七、结构体变量的传参问题八、传输地址带来的问题九、动态结构...
    99+
    2022-11-13
  • C语言深入浅出讲解指针的使用
    目录一、利用指针倒序字符串二、题目实例三、总结一、利用指针倒序字符串 void _reversal(char* left, char* right) { while (lef...
    99+
    2022-11-13
  • C语言结构体简单入门讲解
    结构体 定义:用于存储不同的数据类型,存储在同一块内存空间里面 关键字 struct 标签 结构体名称 成员 例如: struct student {...
    99+
    2022-11-12
  • C语言结构体成员赋值的深拷贝与浅拷贝详解
    目录浅拷贝结构体中不存在指针成员变量时结构体中存在指针成员变量时深拷贝结论浅拷贝 C语言中的浅拷贝是指在拷贝过程中,对于指针型成员变量只拷贝指针本身,而不拷贝指针所指向的目标,它按字...
    99+
    2022-11-13
  • C语言深入浅出讲解顺序表的实现
    目录1.线性表2.顺序表2.1 概念及结构2.2 提供接口2.3 接口实现今天起开始编写数据结构中的各种数据结构及算法的实现,说到顺序表,我们首先得了解下线性表。 1.线性表 线性表...
    99+
    2022-11-13
  • C语言结构体字节对齐的实现深入分析
    目录前言一、什么是字节对齐二、结构体字节对齐三、#pragma pack()的使用总结前言 本教程可能会用到一点汇编的知识,看不懂没关系,知道是那个意思就行了。使用的工具是vs201...
    99+
    2022-11-13
    C语言结构体字节对齐 C语言字节对齐
  • 深入了解C语言结构化的程序设计
    目录C语言是结构化的程序设计语言!if语句1:单分支结构2:多分支结构悬空elsewhile循环总结C语言是结构化的程序设计语言! 结构有三大类:顺序结构,选择结构,循环结构! 顺序...
    99+
    2022-11-12
  • C语言深入讲解语句与选择结构的使用
    目录知识点1-语句1.1 语句1.表达式语句2.控制语句3.空语句4.复合语句知识点2-选择结构2.1 if语句1.if语句的单分支2.if语句的双分支3.if语句的多分支4.if语...
    99+
    2022-11-13
  • C语言 深入解读数据结构之堆的实现
    堆的概念与结构 概念:如果有一个关键码的集合K={ k0,k1 ,k2 ,…,kn-1 },把它的所有元素按完全二叉树的顺序存储方式存储 在一个一维数组中,并满足K i<=K ...
    99+
    2022-11-12
  • C语言深入浅出讲解直接插入排序算法的实现
    目录直接插入排序1.基本思想2.算法实现3.时间复杂度插入排序分为两种:直接插入排序&希尔排序 直接插入排序 1.基本思想 直接插入排序是一种简单的插入排序算法,其基本思想是...
    99+
    2022-11-13
  • C语言示例讲解结构体的声明与初始化方法
    目录一、结构体声明的结构1.直接声明2.使用typedef声明一个新的类型3.不完全声明二.结构体初始化1.声明(同时定义)时直接赋值2.定义时直接赋值3.定义后赋值4.指定初始化一...
    99+
    2022-11-13
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作