C语言结构体详细讲解

news/2024/12/25 14:41:49 标签: c语言, 开发语言

文章目录

    • @[TOC]
  • 一、前言
  • 二、结构体
    • 2.1 结构体概念🎈
    • 2.2 结构体定义🎉
    • 2.3 结构体使用🎗️
    • 2.4 结构体数组使用🎗️
  • 结尾 时间紧后面还有一些知识点这周内补上, 理解理解!(❁´◡`❁)

一、前言

   在学习结构体之前,讲讲为什么会专门写一章博客来分享这个知识点;首先在写C语言蓝桥杯的一些题目的时候,很多地方都会用到结构体,后台粉丝私信我说,出一期这个结构体的内容。于是,在当完牛马过后的我为了不让大家知识点有遗漏或者做题看不懂,加班加点的写了一篇关于结构体的知识点,话不多说,直接进入正题.


二、结构体

2.1 结构体概念🎈

   结构体(Struct)是编程语言中一种用于封装不同类型数据的复合数据类型。它允许将多种相关的数据元素组合成一个单一的实体,形成一个逻辑上的整体。每个数据元素称为“成员”或“字段”,可以是不同的数据类型。

  • 通俗来讲:
  • 一个变量里面可以有很多不同的数据类型;


2.2 结构体定义🎉

结构体定义格式1:
 
struct  结构体标签{
	datatype 变量名;
}结构体变量;

结构体定义例子:
struct Student{
	int id;   //定义一个存学号变量
	char *name;  //定义一个存名字变量
}stu; 

结构体定义格式2:
 
struct  结构体标签{
	datatype 变量名;
};

结构体定义例子:
struct Student{
	int id;   //定义一个存学号变量
	char *name;  //定义一个存名字变量
}; 

结构体定义格式3: (强烈推荐使用这个)
typedef  struct {
	datatype 变量名;
}结构体变量;

结构体定义例子:
typedef struct {
	myType1  id;
	myType2  *name;
}Student;

   在明确怎么定义结构体之后,我们可以很容易看懂前两个列子,但是第三个用到了一个其他的例子,不要着急,结着往下面看:

typedef 数据类型 类型名字
通俗一点说: 就是给人家换了一个名字

myType2 *name; myType2 类型的数据大小,我们通过 myType2 *name;指针大小就可以了,这个指针会帮我们找到下一个数据的位置.

   这个看懂之后我们就需要往后面学习了,我们不可能只是定义结构体而不去使用它,因此接下来学习结构体使用⬇️


2.3 结构体使用🎗️

   注意: 使用之前结构体我们先要对结构体变量进行声明一个结构体变量,怎么做?

//结构体变量声明
struct 结构体标签或者变量名  自己定义一个新的名字;
egOne:
	//这些代码结合上面的代码一起来看
	struct Student student; 
	//这就是声明一个Student类型的student变量;

   知道怎么做了,接下来就是实际上手操作!
   先来一个结构体赋值:

使用方法:(直接用声明的结构体变量直接--->)
	student.id = 202412;
	student.name ="小猿";

   看起来是不是很简单,直接点谁还不会对吧✨,这个呢就相当于我们在给结构体里面的变量输入值了。看到这,各位小伙伴能不能看懂呢(评论区见)。  
   在奖励一个输出::

使用方法:(直接用格式化输入输出即可 )
	printf("id:%d  name:%s\n",student.id,student.name);

   看起来是不是很简单,输出学完了✨,接着就要上升Level了。  
   在奖励一个结构体指针赋值:

	struct Student student; 
	struct Student *pStudent;  //声明一个结构体变量
	pStudent = &student;       //取第一个声明结构体变量的地址
	pStudent->id = 1002;	   //结构体赋值又变了:->
	pStudent->name="结构";
	printf("结构体:    id:%d  name:%s\n",student.id,student.name);
	printf("结构体指针:id:%d  name:%s\n",pStudent->id,pStudent->name);

   学到这,我们就学习结构体的一些基本操作,同时也要明白结构体和结构体指针赋值的一种方式.多余的话就不多说了。

2.4 结构体数组使用🎗️

   概念

   不要被这个吓到了,其实就是普通变量,可以定义一个指针指向结构体,也可以定义结构体数组

   结构体指针:

typedef struct Node {
		ElemType data;
		struct Node *next;
};

Node *newNode = (Node *)malloc(sizeof(newNode));
newNode->data=0;	
newNode->next=NULL

结尾 时间紧后面还有一些知识点这周内补上, 理解理解!(❁´◡`❁)

   Although the road is far,the line is comming,Hard as it is,it will be done.


http://www.niftyadmin.cn/n/5799225.html

相关文章

unity弹出新的类似独立场景窗口独立运行一般怎么实现?

在Unity中实现弹出类似独立场景窗口并独立运行的功能,通常需要采用一些特定的方法或工具,因为Unity本身并没有直接提供这种功能的内置选项。以下是一些可能的实现方法: 1. 使用多个Scene(场景) 加载新Scene&#xff…

web自动扫描解析

一、Web自动扫描的定义与原理 Web自动扫描,顾名思义,是利用自动化工具对Web应用程序进行安全漏洞扫描的过程。这种扫描技术通过主动向目标发送请求,并分析响应来识别安全漏洞。这些请求通常包含特制的参数、头部或数据,以触发目标…

大型语言模型(LLMs)演化树 Large Language Models

大型语言模型(LLMs)演化树 Large Language Models flyfish 下面的图来自论文地址 Transformer 模型(如 BERT 和 GPT-3)已经给自然语言处理(NLP)领域带来了革命性的变化。这得益于它们具备并行化能力&…

WebRTC搭建与应用(五)-Coturn踩坑记

WebRTC搭建与应用(五)-Coturn踩坑记 近期由于项目需要在研究前端WebGL渲染转为云渲染,借此机会对WebRTC等有了初步了解,在此记录一下,以防遗忘。 第五章 WebRTC搭建与应用(五)-Coturn踩坑记 文章目录 WebRTC搭建与应用(五)-Coturn踩坑记前…

【人工智能】基于Python和OpenCV实现实时人脸识别系统:从基础到应用

《Python OpenCV从菜鸟到高手》带你进入图像处理与计算机视觉的大门! 解锁Python编程的无限可能:《奇妙的Python》带你漫游代码世界 随着人工智能和计算机视觉的快速发展,人脸识别技术已广泛应用于监控、安全、社交媒体、金融和医疗等领域。本文将介绍如何利用Python和Ope…

基于Android实现的2048小游戏

基于android的2048 1 课题介绍 为什么要做这个题目呢?我去回想当初定题目时候。主要就是感兴趣,2048这款游戏刚流行起来的时候,就下过来玩。我记得第一次通关花了我10盘都不到。而且到后来玩的时候,会发现玩前期很拖剧情&#x…

RK356x-11:在win11的WSL中开发SDK

我拿到的SDK建议开发的系统是Ubuntu22.04(在SDK-docs中的文档有说明),因此,WSL中要先安装好它。由于PC机上WSL本身不支持aarch64架构,所以,进行ARM64的RK356X开发,需要手动加入支持。用到的支持…

大模型应用技术系列(一):大模型应用整体技术栈浅析

RAG相关的技术学习暂时告一段落了,接下来尝试探索新的学习方向。这就引入一个问题:接下来该做什么?为了能进一步推进,我需要有一个整体的视角,从更上层来看整个技术栈,从而确定接下来感兴趣的方向。本文主要探索从更上层的视角来看构建大模型的技术栈,从而进一步确定研究…