结构体的简单介绍

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

目录

概念:

与数组类比:

结构体声明:

注意:

结构体变量、全局变量、局部变量:

 结构体声明中包含其他结构体变量:

结构体变量的初始化:

包含了其他结构体变量的初始化:

初始化的顺序: 

 结构体变量的打印:

包含其他结构体变量的打印:

使用指针变量名的打印:

 结构体变量的传参:

直接传参:

地址传参:

 两种传参的区别:


                                        结构体的简单介绍,C语言,c语言,指针,结构体

概念:

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

 或者说结构体是描述一个复杂的对象,比如说人,人有年龄身高体重等等数据,当需要描述一个人时,就需要结构体。

与数组类比:

数组是同一种类型的元素的集合,而结构体也是一种结合,且结构体内部的元素可以是不同类型的数据。

结构体声明:

struct tag
{
 member-list;
}variable-list;
  • struct是结构体的关键字,不可更改。
  • tag是结构体的名字,或者标签,可以更改。
  • member-list 结构体的成员列表,表示结构体内部的元素。
  • variable-list 结构体的变量成员列表,表示类型是结构体的变量,可以省略。

注意:

声明只是表示结构体的类型,并不占内存的空间,只有结构体变量初始化或者进行改变的时候,才会占用内存空间。

结构体变量、全局变量、局部变量:

比如:

struct Peo
{
   char name[20];
   char tele[12];
   char sex[5];
   int high;
}p1,p2;

int main()
{
  return 0;
}

 p1和p2都是结构体struct peo类型的变量,而且是全局变量。

struct Peo
{
   char name[20];
   char tele[12];
   char sex[5];
   int high;
};

int main()
{
 
  struct peo p;
  return 0;
}

p是结构体 struct peo类型的变量,但是它是局部变量。

 结构体的简单介绍,C语言,c语言,指针,结构体

 结构体声明中包含其他结构体变量:

struct Peo
{
   char name[20];
   char tele[12];
   char sex[5];
   int high;
};

struct st
{
   struct peo p;
   int num;
   float f;  
};

int main()
{
 
  struct peo p;
  return 0;
}

结构体struct st中包含了结构体struct peo类型的变量 p 

结构体变量的初始化:

struct Peo
{
   char name[20];
   char tele[12];
   char sex[5];
   int high;
};

int main()
{
 
  struct peo p = {"张三","15596668862", "男", 181};
  return 0;
}

 结构体的简单介绍,C语言,c语言,指针,结构体

包含了其他结构体变量的初始化:

struct Peo
{
   char name[20];
   char tele[12];
   char sex[5];
   int high;
};

struct st
{
   struct peo p;
   int num;
   float f;  
};

int main()
{
 
  struct st s = { {"lisi","15596668888","女",166},108,3.14f};
  return 0;
}
  • 在包含其他结构体的变量时,进行初始化也要把其他结构体变量中的内容进行初始化。
  • 比如以上代码中的{"lisi","15596668888","女",166}就是结构体声明struct st中的另一个结构体变量struct peo p的变量的初始化。 

初始化的顺序: 

结构体的简单介绍,C语言,c语言,指针,结构体

 记住需要按照结构体成员的顺序初始化

 结构体的简单介绍,C语言,c语言,指针,结构体

不按照顺序则需要按照以上写法使用 操作符   .  加上成员名 = 初始化的数据 

但是以上两种的打印方式是一样的。  

 结构体变量的打印:

struct Peo
{
   char name[20];
   char tele[12];
   char sex[5];
   int high;
};

int main()
{
 
  struct peo p = {"张三","15596668862", "男", 181};
  printf("%s %s %s %d\n", p.name, p.tele, p.sex, p.high);
  return 0;
}

结构体打印的时候需要使用操作符 “  ” 进行指引。

格式:结构体变量名 . 结构体成员名

包含其他结构体变量的打印:

struct Peo
{
   char name[20];
   char tele[12];
   char sex[5];
   int high;
};

struct st
{
   struct peo p;
   int num;
   float f;  
}

int main()
{
 
  struct st s = { {"lisi","15596668888","女",166},108,3.14f};
  printf("%s %s %s %d %d %f\n", s.p.name, s.p.tele, s.p.sex, s.p.high, s.num, s.f);
  return 0;
}

包含其他结构体变量的打印方式如以上代码所示。

本结构体变量名.其他结构体变量名.列表成员名 —打印出其他结构体变量内部的结构体成员名的格式。

使用指针变量名的打印:

 结构体的简单介绍,C语言,c语言,指针,结构体

 结构体变量的传参:

直接传参:

struct Peo
{
   char name[20];
   char tele[12];
   char sex[5];
   int high;
};

void print1(struct Peo p)
{
   printf("%s %s %s %d\n", p.name, p.tele, p.sex, p.high);
}

int main()
{
 
  struct peo p = {"张三","15596668862", "男", 181};
  print1(p);
  return 0;
}

地址传参:

struct Peo
{
   char name[20];
   char tele[12];
   char sex[5];
   int high;
};

void print2(struct Peo *sp)
{
   printf("%s %s %s %d\n",sp->name, sp->tele,sp->sex,sp->high);
}

int main()
{
 
  struct peo p = {"张三","15596668862", "男", 181};
  print2(&p);
  return 0;
}

传参地址,在打印的时候需要使用指针名->结构体成员名的格式

void print2(struct Peo *sp)
{
   printf("%s %s %s %d\n",sp->name, sp->tele,sp->sex,sp->high);
}

void print1(struct Peo p)
{
   printf("%s %s %s %d\n", p.name, p.tele, p.sex, p.high);
}

结构体的简单介绍,C语言,c语言,指针,结构体

 两种传参的区别:

  • 实参直接传给形参,其实是一种拷贝,形参也要开辟一个和实参一样大的空间,而后将实参的数据拷贝给形参,但是这样子会造成空间浪费,拷贝数据时也会浪费相对因的时间,若实参越大,浪费的空间越大,拷贝的时间越多。
  • 把结构体变量的地址作为实参传递给形参,形参就只需要创建一个指针的变量空间,通过这个指针变量找结构体的所在空间位置,进行读取数据。

 结论:所以结构体传参的时候一般使用传递结构体变量的地址进行传参。

结构体的简单介绍,C语言,c语言,指针,结构体文章来源地址https://www.toymoban.com/news/detail-692040.html

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

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

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

相关文章

  • C语言如何计算结构体大小(结构体的内存对齐)

    结构体的内存对齐是有关结构体内容的很重要一个知识点,主要考察方式是计算结构体的字节大小。 当我们对计算结构体一无所知,我们不妨自己思索如何计算,是不是直接计算结构体成员变量占用内存的大小呢? 那我们先举个例子  观察发现结构体的大小计算跟我们想的

    2024年02月16日
    浏览(46)
  • C语言结构体的初始化方式

    逐个初始化字段 :这是最直接的方式,你可以逐个为结构体的每个字段进行初始化。 2.使用结构体字面值初始化 :这种方式允许你在初始化时使用一个字面值来为结构体提供初始值 3. 全局初始化 :在全局范围内,你可以在变量声明时就进行初始化。 4. 使用  memset  函数 :

    2024年02月09日
    浏览(57)
  • C语言笔记——结构体的三种打印方法

    (看鹏哥C语言视频学的,自己做的笔记) 首先定义一个结构体(以学生的信息为例): 第一种 打印方法: 注意:age要对应%d,其余都是%s,其余三个顺序换了无所谓。 运行结果:   第二种 打印方法(函数+地址): 第三种 打印方法(与第二种方法类似,用箭头表示而已)

    2024年02月02日
    浏览(51)
  • 【C语言】什么是结构体内存对齐?结构体的大小怎么计算?

      目录 1.结构体内存对齐 对偏移量的理解:​ 2.结构体的大小计算 2.1结构体中只有普通的数据类型的大小计算 2.2 结构体中有嵌套的结构体的大小计算 3.修改默认对齐数 4.为什么存在内存对齐? 这篇文章主要介绍结构体内存对齐和如何计算大小。 在学习结构体内存对齐之前,

    2024年02月11日
    浏览(52)
  • 【c语言】——结构体千字解读,看完你肯定不会有任何结构体的疑惑

    在学习初期,我们接触了很多整型,浮点型,字符型等变量,其实结构体从整体上看和他们都 差不多 其实现阶段对结构体有疑惑的无疑是 1.用的少,老是忘记怎么用  2.对结构体的知识点不是很牢,经常弄混 第一点只能自己找题目练习,第二点不用担心,看完就可以豁然开

    2024年03月10日
    浏览(30)
  • 【初始C语言8】详细讲解初阶结构体的知识

    💓作者简介: 加油,旭杏,目前大二,正在学习 C++ , 数据结构 等👀 💓作者主页:加油,旭杏的主页👀 ⏩本文收录在:再识C进阶的专栏👀 🚚代码仓库:旭日东升 1👀 🌹欢迎大家点赞 👍 收藏 ⭐ 加关注哦!💖         在上一章中,我们浅浅地学习了初阶指针的相

    2024年02月08日
    浏览(43)
  • Go语言结构体struct详解,Go空结构体的这些妙用你知道吗?

    本文详解了Go语言结构体的各个知识点,最后介绍了空结构体的3种妙用。希望对你有帮助。 结构体,是一种自定义的数据类型,由多个数据类型组合而成。用于描述一类事物相关属性 。 定义方式 : 结构体和结构体指针,两者的实例化有所区别 提供多种写法,灵活使用:

    2024年02月01日
    浏览(47)
  • C语言第十四课-------结构体的认识和使用-------重要一笔

    🎂        ✨✨✨✨✨✨🍧🍧🍧🍧🍧🍧🍧🎂    🎂      作者介绍:                              🎂🎂        🎂 🎉🎉🎉🎉🎉🎉🎉              🎂           🎂作者id:老秦包你会,         🎂 简单介绍:🎂🎂🎂🎂🎂🎂🎂🎂🎂🎂🎂🎂🎂🎂🎂

    2024年02月14日
    浏览(45)
  • 【C语言高阶篇】C语言面试必考知识点,结构体的内存对齐我看还有谁不会!

    🎬 鸽芷咕 :个人主页  🔥 个人专栏 :《C语言初阶篇》 《C语言进阶篇》 ⛺️生活的理想,就是为了理想的生活!    🌈 hello! 各位宝子们大家好啊,今天给大家带来的是结构体的内存对齐这部分知识,可以说是干货满满啦!    ⛳️ 在我们C语言的面试题中,结构体最

    2024年02月16日
    浏览(49)
  • C语言自定义类型:结构体的使用及其内存对齐【超详细建议点赞收藏】

    结构是一些值的集合,这些值称为 成员变量 。 结构的每个成员可以是不同类型的变量 。 注意 : 成员列表可以是不同类型的变量; 成员后一定要有分号; 花括号后也有一个分号。 例如描述一个学生: 注意:上述代码没有创建变量,也没有初始化, 只是声明了一个结构体类

    2024年03月13日
    浏览(56)

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

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

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

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

二维码1

领取红包

二维码2

领红包