【初阶C语言】学会结构体

这篇具有很好参考价值的文章主要介绍了【初阶C语言】学会结构体。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

1.结构体类型的声明
2.结构体初始化
3.结构体成员访问
4.结构体传参
 


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

一、结构体类型的声明

1.结构的声明

结构体声明的模板:

struct tag
{
   member-list;
}variable-list;

【初阶C语言】学会结构体,c语言,开发语言

    这是一个模板的声明,得出来的结构体只是一种类型,与int char一样。

例如,我们需要描述一个学生的信息,能用int类型来描述学生吗?显然是不行的,因为学生包括了学号(char),名字(char),年龄(int)和性别(char),所以这不是一个单一的类型,就需要用到结构体来描述该学生。

第一种声明方式:这个结构体的全名为:strcut Stu

struct Stu
{
    char name[20];//名字
    int age;//年龄
    char sex[5];//性别
    char id[20];//学号
};//这里的分号不能丢

第二种方式:重命名

typedef struct Stu
{
char name[20];//名字
int age;//年龄
char sex[5];//性别
char id[20];//学号
}Stu;//给结构体类型重新取名为Stu

重新命名的方式还可以这样:

struct Stu
{
char name[20];//名字
int age;//年龄
char sex[5];//性别
char id[20];//学号
};
typedef struct Stu Stu;//重新起一行来命名

第三种方式:在声明的时候创造变量

struct Stu
{
    char name[20];//名字
    int age;//年龄
    char sex[5];//性别
    char id[20];//学号
}S1;//这里的S1是结构体创造出来的全局变量

 上面一系列的操作都只是对一个结构体类型进行了声明而已,更多内容尽在后面。

2.结构体成员的类型

前言:在上面的模板我们可以知道,member_list是结构体成员,那结构体成员的类型可以是哪些呢?

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

struct A 
{
	char c;
	int a;
}; ​
struct B
{
	char b;
	int arr[10];
	struct A c;//成员为其他结构体成员
	struct A* F;//为指针类型
};

但是需要注意的是,结构体成员不可以是本身的结构体,但是可以是本身结构体指针。

3.结构体变量的创建和初始化

在前面的时候,我们有介绍过在声明的时候创造的全局变量,接下来都一起介绍了。

第一种创造方式:

#include<stdio.h>
struct Stu
{
	char c;
	int arr[10];
};
int main()
{
	struct Stu A;//结构体变量A
	struct Stu B;//结构体变量B
	return 0;
}

这里创造的变量A和B都是局部变量。

第二种创造方式:

#include<stdio.h>
typedef struct Stu
{
	char c;
	int arr[10];
}Stu;//对结构体重命名
int main()
{
	//struct Stu A;//结构体变量A
	//struct Stu B;//结构体变量B
	Stu C;//结构体变量C
	return 0;
}

第三种方式:上面提到过的创造全局变量

#include<stdio.h>
struct Stu
{
	char c;
	int arr[10];
}D;//全局变量D
int main()
{
	//struct Stu A;//结构体变量A
	//struct Stu B;//结构体变量B
	//Stu C;//结构体变量C
	return 0;
}

在创建后变量后,就该对变量进行初始化了

初始化:

#include<stdio.h>
struct Stu
{
	char name[20];
	int age;
	double height;
};
int main()
{
	struct Stu s1 = {"zhangsan",20,182.8};//顺序初始化
	struct Stu s2 = {.age=18,.height=188.5};//指定成员初始化
	return 0;
}

在创建变量的时候就初始化:

struct Stu
{
	char name[20];
	int age;
	double height;
}s3 = {"lisi",19,150.6};//创造的全局变量并初始化

二、结构体成员的访问

当完成结构体的声明、结构体变量的创建和初始化后,就可以使用结构体了,这就是涉及到结构体成员访问的知识。

结构体的访问有两个操作符:'.'操作符和'->'操作符

接下来我们通过初始化和打印的两个操作来举例说明结构体成员访问的例子。

#include<stdio.h>
struct Stu
{
	double height;
	int age;
};
void set_s1(struct Stu* ps)//用结构体类型指针接收
{
	ps->age = 22;
	ps->height = 188.45;//用"->"操作符访问结构体成员
}
void print(struct Stu s)
{
	printf("%d %lf",s.age,s.height);
}
int main()
{
	struct Stu s1 = { 0 };//这里先初始化成0
	//用一个函数对结构体变量赋值
	set_s1(&s1);//因为需要修改值,所以必须要传址
	//用一个函数打印结构体变量中的数据
	print(s1);//只需要打印,不需要修改。传值就可以
	return 0;
}

我们看一下运行的结果:【初阶C语言】学会结构体,c语言,开发语言

 在上面的例子中,出现了两个操作符,具体什么时候用哪个我们总结一下。(.和->)

结构体变量.成员名        结构体指针->成员名

就是在用指针的时候,左边必须是->,另一个同样的道理。

通过上面的例子我们可以知道,结构体既可以传值,也可以传地址,接下来我们一起看看这两个的差异吧。

1.传参

传参的话,需要重新开辟的空间很会很大,并且有的情况下传值是不能达成要求的,因为形参是实参的一份拷贝

2.传址

传址可以适用于所有的情况,并且所需要重新开辟的内存不大,所以尽可能使用结构体传址的方法。文章来源地址https://www.toymoban.com/news/detail-623671.html

到了这里,关于【初阶C语言】学会结构体的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 初阶C语言-结构体

    🌞 “少年有梦不至于心动,更要付诸行动。” 今天我们一起学习一下结构体的相关内容! 📖 结构 是一些值的集合,这些值称为 成员变量 ,结构的每个成员可以是不同类型的变量。 📝为什么会出现结构体呢?在我们当前的一些学习中,我们学过的类型都是内置类型,例

    2024年02月11日
    浏览(37)
  • 初阶C语言——结构体

    Hello,我们又见面了,我们的初阶C语言也将要结束,今天讲的是结构体,那我们开始今天的学习。 结构体的声明 1.1 结构的基础知识 结构是一些值的集合,这些值称为成员变量。结构的每个成原可以是不同类型的变量 1.2 结构的声明 下面我们写代码来举例子吧 我们现在写一

    2024年02月16日
    浏览(36)
  • 【C语言】初阶结构体

    👦个人主页:Weraphael ✍🏻作者简介:目前正在回炉重造C语言(2023暑假) ✈️专栏:【C语言航路】 🐋 希望大家多多支持,咱一起进步!😁 如果文章对你有帮助的话 欢迎 评论💬 点赞👍🏻 收藏 📂 加关注😍 1.1 结构的概念 结构 是一些= 值的集合 ,这些值称为 成员变量

    2024年02月16日
    浏览(31)
  • C语言——结构体初阶

      哈喽,大家好,今天我们来学习C语言中的结构体,今天主要学习初阶结构体,后期我们将继续学习结构体进阶。 目录 1.结构体类型的声明 1.1 结构体的基础知识 1.2 结构的声明  1.3 结构成员的类型 1.4 结构体变量的定义和初始化 2. 结构体成员的访问 3.结构体传参 结构是一

    2024年02月07日
    浏览(28)
  • C语言完整版笔记(初阶,进阶,深刨,初阶数据结构)

    1.初阶: 1.1C语言初阶易忘知识点速记 2.进阶:  1.2C语言进阶易忘点速记 3.深剖: 2.1C语言重点解剖要点速记 2.2C语言重点解剖操作符要点速记   2.3C语言重点解剖预处理要点速记 2.4C语言重点解剖指针和数组要点速记 2.5C语言重点解剖内存管理函数要点速记 4.数据结构:

    2024年02月16日
    浏览(38)
  • 『C语言初阶』第九章 -结构体

    🔥 博客主页 : 小羊失眠啦. 🔖 系列专栏 : C语言 🌥️ 每日语录 : 相信自己,比谁都棒。 ❤️ 感谢大家点赞👍收藏⭐评论✍️ 前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家。点击跳转到网站。 今天小羊又来给铁汁们分享关

    2024年02月12日
    浏览(42)
  • 『C语言初阶』第八章 -结构体

    🔥 博客主页 : 小羊失眠啦. 🔖 系列专栏 : C语言 🌥️ 每日语录 : 相信自己,比谁都棒。 ❤️ 感谢大家点赞👍收藏⭐评论✍️ 前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家。点击跳转到网站。 今天小羊又来给铁汁们分享关

    2024年02月12日
    浏览(36)
  • 『初阶数据结构 • C语言』① - 数据结构为何重要

    本文内容借鉴一本我非常喜欢的书——《数据结构与算法图解》。学习之余,我决定把这本书精彩的部分摘录出来与大家分享。 数组是计算机科学中最基本的数据结构之一。如果你用过数组,那么应该知道它就是一个含有 数据的列表。它有多种用途,适用于各种场景,下面

    2024年02月16日
    浏览(47)
  • 【数据结构初阶】之堆(C语言实现)

    前言 :在二叉树基础篇我们提到了二叉树的顺序实现,今天让我们来学习一下特殊的二叉树———堆的相关知识。 📃 博客主页: 小镇敲码人 💞 热门专栏:数据结构与算法 🚀 欢迎关注:👍点赞 👂🏽留言 😍收藏 🌏 任尔江湖满血骨,我自踏雪寻梅香。 万千浮云遮碧月

    2024年04月09日
    浏览(82)
  • 零基础玩转C语言—结构体【初阶】

    大家好,我是深鱼~ 目录 【前言】: 一、结构体的声明 1.1结构的基本知识 1.2结构的声明 1.3结构体成员的类型 1.4结构体变量的定义和初始化 二、结构体成员的访问 【前言】:本章来介绍结构体的部分知识,并不会深入讲解,只是初阶部分,看得懂结构体的逻辑,并且会简单

    2024年02月14日
    浏览(37)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包