iis服务器助手广告广告
返回顶部
首页 > 资讯 > 后端开发 > 其他教程 >C 语言结构体的使用方法
  • 721
分享到

C 语言结构体的使用方法

2024-04-02 19:04:59 721人浏览 八月长安
摘要

目录C 语言结构体使用1. 结构体的声明和定义1.1 介绍1.2定义的几种类型2. 结构体初始化3. 结构体成员访问4. 结构体传参C 语言结构体使用 1. 结构体的声明和定义 1.

C 语言结构体使用

1. 结构体的声明和定义

1.1 介绍

  • 我们知道数组是同种类型值的集合,而结构就是可以将不同类型的值放在一起。
  • 结构是一些值的集合,这些值称为成员变量。结构的每个成员可以是不同类型的变量。
  • 结构的成员可以是标量、数组、指针,甚至是其他结构体。

如我们可以将一个学生的一些属性放在一起


struct stu//定义一个结构体类型,就如int、char,struct stu是我们定义的结构体类型
{
    //成员变量
    char name[20];//名字
    int age;//岁数
    char id[20];//学号
};
int main()
{
    struct stu a;//定义一个struct stu类型的变量a,而对象a中就包含了名字,岁数,学号的属性
}

1.2定义的几种类型

类型1:


struct stu
{
    char name[20];
    int age;
};
int main()
{
    struct stu a;//定义局部变量a
}

类型2:


struct stu
{
    char name[20];
    int age;
}s1,s2;//定义全局变量s1,s2

2. 结构体初始化

代码如下:


struct book
{
   float height;
   char name[20];
}b;
struct stu
{
    char name[20];
    int age;
    char id[20];
    struct book b;
};
int main()
{
    //初始化时,其实是和数组初始化一样,用大括号,里面放上初始化的值。若结构体里面包含结构体,则大括号里面 //在放一个大括号,里面放内部结构体初始化的值
    
    struct stu a={"bobo",18,"2021520",{15.8,"free"}};
}

3. 结构体成员访问

3.1 成员介绍

  • 结构变量的成员是通过点操作符(.)访问的。点操作符接受两个操作数,如:m.n(m为结构体变量,n为结构体中你想要访问的成员变量)
  • 指向一个结构体的指针访问指向变量的成员是通过操作符(->)访问的。 如:m->n(m为指向一个结构体的指针,n为结构体中你想要访问的成员变量),也可以(*m).n

struct book
{
   float height;
   char name[20];
}b;
struct stu
{
    char name[20];
    int age;
    char id[20];
    struct book b;
};
int main()
{
    struct stu a={"bobo",18,"2021520",{15.8,"free"}};
    //法一
    printf("%s\n",a.name);
    printf("%d\n",a.age);
    printf("%.1f\n",a.b.height);//若访问结构体中的结构体中的一个成员,先访问到内部的结构体,再访问内部结构体中的成员
    
    //法二
    struct stu* pa=&a;
    printf("%s\n",pa->name);
    printf("%d\n",pa->age);
    printf("%.1f\n",pa->b.height);
    
    //法三
    printf("%s\n",(*pa).name);
    printf("%d\n",(*pa).age);
    printf("%.1f\n",(*pa).b.height);
}

4. 结构体传参

注意:

结构体传参的时候,要传结构体的地址更好

代码如下:


struct book
{
   float height;
   char name[20];
}b;
struct stu
{
    char name[20];
    int age;
    char id[20];
    struct book b;
};
void print1(struct stu p)
{
    printf("%s %d %s %.1f %s",p.name,p.age,p.id,p.b.height,p.b.name);
}
void print2(struct stu* pa)
{
    printf("%s %d %s %.1f %s",pa->name,pa->age,pa->id,pa->b.height,pa->b.name);
}
int main()
{
    struct stu a={"bobo",18,"2021520",{15.8,"free"}};
    
    //写一个函数打印a的内容
    
    print1(a);//结果为:bobo 18 2021520 15.8 free(正常打印)
    
    //再写一个函数,通过传a的地址打印a的内容
    
    print2(&a);//结果为:bobo 18 2021520 15.8 free(正常打印)
    
    return 0;
}

那么传值和传址有什么不同,哪个更好呢?(首选传址

  • 传参时,其实是对实参的一份拷贝,是会开辟一块空间来存储实参。传值,是将整个实参拷贝过去,而传地址,传过去的只是地址,传参的效率更高一些。
  • 函数传参的时候,参数是需要压栈的。 如果传递一个结构体对象的时候,结构体过大,参数压栈的的系统开销比较大,所以会导致性能的下降。

那么什么是函数调用的参数压栈呢?

栈:一种数据结构,是一种只能在一端进行插入和删除操作的特殊线性表

特点:先进的后出,后进的先出。(先进入的数据被压入栈底,最后的数据在栈顶,需要读数据的时候从栈顶开始弹出数据(最后一个数据被第一个读出来))

压栈:给栈里存数据

  • 每一个函数的调用都会在内存的栈区上开辟一块空间,并且数据都会如压栈一样一个一个的存放进栈区,如果数据比较多、大时,参数压栈就比较吃力,所以导致性能就会下降。

到此这篇关于C 语言结构体的使用基础版的文章就介绍到这了,更多相关C 语言结构体的使用内容请搜索编程网以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程网!

--结束END--

本文标题: C 语言结构体的使用方法

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

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

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

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

下载Word文档
猜你喜欢
  • C 语言结构体的使用方法
    目录C 语言结构体使用1. 结构体的声明和定义1.1 介绍1.2定义的几种类型2. 结构体初始化3. 结构体成员访问4. 结构体传参C 语言结构体使用 1. 结构体的声明和定义 1....
    99+
    2022-11-12
  • C语言结构体的具体使用方法
    目录初识C语言结构体1.为什么要有结构体2.结构体的定义2.1结构体类型的定义2.2定义结构体普通变量及访问2.3定义结构体指针变量及访问初识C语言结构体 1.为什么要有结构体 (1...
    99+
    2022-11-12
  • C语言使用四种方法初始化结构体
    目录什么是结构体结构体的优点定义方法一:定义时赋值方法二:定义后逐个赋值方法三:定义时乱序赋值(C风格)方法四:定义时乱序赋值(C++风格)什么是结构体 在实际问题中,一组数据往往有...
    99+
    2022-11-12
  • C语言结构体如何使用
    本文小编为大家详细介绍“C语言结构体如何使用”,内容详细,步骤清晰,细节处理妥当,希望这篇“C语言结构体如何使用”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。本质一些值的集合。简单使用#include ...
    99+
    2023-06-30
  • C语言结构体指针的具体使用
    目录什么是结构体指针?如何访问结构体成员?如何传递结构体指针作为参数?结构体指针数组在 C语言中,结构体指针是一种非常有用的数据类型,它可以让我们更方便地操作结构体。结构体指针可以指...
    99+
    2023-05-20
    C语言结构体指针
  • C语言中的结构体怎么使用
    这篇文章主要讲解了“C语言中的结构体怎么使用”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“C语言中的结构体怎么使用”吧!一、关于结构体在C语言中,结构体(struct)指的是一种数据结构,是...
    99+
    2023-06-16
  • 详解C语言中结构体的使用
    目录结构体的声明结构体成员的类型结构体成员的访问结构体的声明 结构体的定义:结构体是一些值的集合,这些值称为成员变量,结构体的每个成员可以是不同类型的变量。 举例: //定义结构体类...
    99+
    2022-11-13
  • C语言中的结构体如何使用
    本篇内容介绍了“C语言中的结构体如何使用”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!结构体的声明结构体的定义:结构体是一些值的集合,这些值...
    99+
    2023-07-02
  • C语言中结构体如何使用
    今天就跟大家聊聊有关C语言中结构体如何使用,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。一、关于结构体在C语言中,结构体(struct)指的是一种数...
    99+
    2022-10-19
  • C语言结构体使用之链表
    目录一、结构体的概念二、结构体的用法三、结构体数组和指针四、结构体指针五、包含结构体的结构体六、链表七、静态链表八、动态链表一、结构体的概念 比如说学生的信息,包含了学生名称、学号、...
    99+
    2022-11-13
  • C语言 structural body结构体详解用法
    目录结构体结构体类型的声明举个现实例子程序实例结构体成员的类型:结构体变量的定义和初始化程序一结构体嵌套情况下,初始化和定义结构体成员的访问结构体传参程序一:程序二结构体 结构是一些...
    99+
    2022-11-12
  • 浅谈C语言结构体
    目录前言什么是结构体结构体类型的声明结构的自引用结构体变量的定义和初始化结构体的使用结构体内存对齐结构体传参总结前言 在C语言中,除了内置的许多数据类型,C语言还为我们提供了自定义的...
    99+
    2022-11-12
  • C语言结构体的全方面解读
    目录前言一、结构体的声明与定义1.结构体的声明2.结构成员的类型3.结构体的定义二、初始化结构体三、访问结构体成员四、结构体嵌套五、结构体指针六、结构体传参总结前言 C语言提供了不同...
    99+
    2022-11-12
  • C语言中的结构体快排算法
    目录C语言结构体快排算法基于结构体数组的快速排序C语言结构体快排算法 代码: #include<stdio.h> #include<string.h> #i...
    99+
    2022-11-16
    C语言结构体 结构体快排算法 C结构体快排算法
  • c语言结构体字节对齐的实现方法
    目录1.什么是字节对齐 2.为什么要有字节对齐 3.手动设置对齐 4.结构体比较方法 1.什么是字节对齐 在c语言的结构体里面一般会按照某种规则去进行字节对齐。 我们先看一段代码...
    99+
    2022-11-12
  • C语言中结构体与内存对齐的方法
    这篇文章主要介绍了C语言中结构体与内存对齐的方法的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇C语言中结构体与内存对齐的方法文章都会有所收获,下面我们一起来看看吧。1.结构体类...
    99+
    2022-10-19
  • C语言 - 结构体、结构体数组、结构体指针和结构体嵌套
    结构体的意义 问题:学籍管理需要每个学生的下列数据:学号、姓名、性别、年龄、分数,请用 C 语言程序存储并处理一组学生的学籍。 单个学生学籍的数据结构: 学号(num): int 型姓名(name) :char [ ] 型性别(sex):c...
    99+
    2023-08-30
    c语言 开发语言
  • c语言结构体指针如何使用
    在C语言中,我们可以使用指针来操作结构体变量。首先,我们需要定义一个结构体类型,然后声明一个结构体变量。接下来,我们可以使用指针来操...
    99+
    2023-10-28
    c语言
  • C语言中的结构体内嵌函数用法
    目录C语言的结构体内嵌函数1.内嵌函数定义举例:经过真实测试2.内嵌函数的个人理解结构体嵌套函数指针解释总结C语言的结构体内嵌函数 看门见山 1.内嵌函数定义举例:经过真实测试 在函...
    99+
    2023-02-24
    C语言结构体 C语言函数 结构体内嵌函数
  • c语言结构体数组的用法是什么
    在C语言中,结构体数组是一种特殊的数据类型,可以用于存储和操作多个结构体对象。结构体数组由多个相同类型的结构体对象组成,每个对象可以...
    99+
    2023-10-27
    c语言
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作