首页 > 其他分享 >struct加typedef和不加的区别

struct加typedef和不加的区别

时间:2025-01-04 20:33:18浏览次数:1  
标签:10 typedef struct malloc 不加 id name

一.不加typedef

struct Node {
    int id[10];
    char name[10];
}p; 

**p是结构体变量 已经定义过了不需要malloc申请空间 **

使用场景

//不需要定义只能静态分配内存在静态区随进程
p.id[0] = 1; // 将 id 数组的第一个元素赋值为 1  
strcpy(p.name, "小明"); // 使用 strcpy 来复制字符串 

二.加typedef

typedef struct Node {
    int id[10];
    char name[10];
}p; 

p是结构体类型的别名 a == struct Node 更加方便简捷;

使用场景

p a;       //声明了struct Node类型的变量p(这里静态分配但是可以动态分配)
a.id[0] = 1; // 将 id 数组的第一个元素赋值为 1  
strncpy(a.name, "小明",); // 使用 strcpy 来复制字符串  

三.动态分配malloc
动态分配将内存放到了堆区
优点

  1. 可调大小
  2. 全局可用
    缺点
    需要手动清除
    使用场景
typedef struct Node {
    int id[10];
    char name[10];
}p; 
p *a = malloc(sizeof(c))   //malloc返回一个地址的指针需要一个指针来存储(动态分配内存在堆区随程序全局);和上面的用法进行对比记忆更好理解
a->id[0] = 1; // 将 id 数组的第一个元素赋值为 1  
strncpy(a->name, "小明",); // 使用 strcpy 来复制字符串  

注意
所有malloc的空间是堆空间全局可以用,再不需要的时候需要free()清除防止内存占用;

标签:10,typedef,struct,malloc,不加,id,name
From: https://www.cnblogs.com/peter042516/p/18652321

相关文章

  • “illegal instruction”:一个Linux编译选项引发的“血案”——march配置
    1.项目场景在项目中,我们将在研发主机的Ubuntu18.04系统上编译的一个可执行程序拷贝到一个全新主机(Ubuntu18.04)上运行时,出现了“illegalinstruction”错误。如下图所示:2.问题描述当时最开始以为是代码问题,尝试了很多修改,没任何用。后面推断是动态库的问题,将我们依赖......
  • 【Rust自学】5.2. struct使用例(加打印调试信息)
    对不起我都写到第8章了才发现我忘记发这一篇了,现在补上,不过这可能导致专栏的文章顺序有一点问题,但也只能将就着了。喜欢的话别忘了点赞、收藏加关注哦(加关注即可阅读全文),对接下来的教程有兴趣的可以关注专栏。谢谢喵!(=・ω・=)5.2.1.例子需求创建一个函数,计算长方形的面积,长......
  • CIV6782 Climate resilient water infrastructure
    CIV6782Climateresilientwaterinfrastructuredesign–CourseworkbriefDrCharlesRougé(c.rouge@sheffield.ac.uk)Part1–Documentanalysis(35marks)Pleasepickoneofthefollowingthreeresearchpapers:Quinnetal.(2018).Exploringhowchanging......
  • Structured-Streaming初识
    一、概览StructuredStreaming是一个基于SparkSQL引擎构建的可扩展且容错的流处理引擎。可以像在静态数据上表达批量计算一样表达流计算。SparkSQL引擎将负责以增量方式连续运行它,并在流数据继续到达时更新最终结果。可以使用Scala、Java、Python或R中的Dataset/DataFrameAPI......
  • 【思维导图系列】Simple instructions: Source code quality defined in ISO26262
    MainstandardsregaringtheSWdesignandqualityassurance1).MISRACprogrammingrulesforembeddedcriticalsustems[MISRA-C:2004];2).HISsourcecodeMetricsforsoftwareevaluations[HIS];3).ASPICEforsoftwareprocessabdmanagement[ISO/IEC15504......
  • 论文阅读:Deep Fusion Clustering Network With Reliable Structure Preservation
    论文地址:DeepFusionClusteringNetworkWithReliableStructurePreservation|IEEEJournals&Magazine|IEEEXplore代码地址:https://github.com/gongleii/DFCN-RSP摘要深度聚类通过优雅地利用数据表示来寻找样本的划分,已引起广泛关注。最近,将自编码器(AE)与图神经......
  • Diamonds task instructions
    Assessmenttask2Outcomescovered2and3AssessmenttaskinstructionsThisisanopen-bookprojectcoveringOutcomes2and3.Theprojectisbrokendownintotwostages.Stage1istheprogramimplementationandStage2isthetestingofthecompletedpro......
  • 使用UnstructuredRSTLoader加载RST文件的实战指南
    在大数据时代,爬取和收集网络数据是AI应用中的重要一环。而今天要跟大家分享的是一个非常强大的工具——Spider,它以其快速和高性价比著称,非常适合用于获取适合大型语言模型(LLM)的数据。技术背景介绍Spider是一款专门为AI代理和大型语言模型设计的网络爬虫工具。它最大的特......
  • CS61B srping 2018 lab03 https://sp18.datastructur.es/
    UnitTestingwithJUnit,Debugging准备装好CS61B插件(emmmmm,不装也没事)把lab2的IntList.java复制到lab3/IntList文件夹.看看关于测试的课程视频介绍啊?JUnit是java测试框架,现在要用JUnit进行单元测试,单元Unit就是把程序分成小块的单元,一个单元的功能尽量少,单独测试,......
  • CrisisSense-LLM: Instruction Fine-Tuned Large Language Model for Multilabel Soci
    本文是LLM系列文章,针对《CrisisSense-LLM:InstructionFine-TunedLargeLanguageModelforMultilabelSocialMediaTextClassificationinDisasterInformatics》的翻译。CrisisSense-LLM:灾难信息学中多标签社交媒体文本分类的指令微调大语言模型摘要1引言2......