Struct的定义

青灯古佛 财经Struct的定义已关闭评论111字数 635阅读模式
摘要上一小节我们了解了声明的定义,那么定义是什么呢?---定义是要求编译器填充前面声明没有书写的地址栏。 也就是说某变量对应的地址,只有在其定义时才知道。因此实际的在栈上分配内存等工作...

大家好,今天小编来为大家解答以下的问题,关于Struct的定义这个很多人还不知道,现在让我们一起来看看吧!

上一小节我们了解了声明的定义,那么定义是什么呢?文章源自微观生活(93wg.com)微观生活-https://93wg.com/42188.html

结构体定义 typedef struct Lnode int data struct Lnode next Lnode, LinkList 文章源自微观生活(93wg.com)微观生活-https://93wg.com/42188.html

---定义是要求编译器填充前面声明没有书写的地址栏。 也就是说某变量对应的地址,只有在其定义时才知道。文章源自微观生活(93wg.com)微观生活-https://93wg.com/42188.html

因此实际的在栈上分配内存等工作都是由变量的定义完成的,所以才有声明的变量其实不分配内存。但应注意一个重点,定义是生成映照元素需要的地址,因此定义也就说明了它生成的是哪一个映照元素的地址,而如果此时编译器的映照表(即之前说的编译器内部用于记录映照元素的变量表、函数表等)中没有那个映照元素,即还没有相应元素的声明出现过,那么编译器将报错。文章源自微观生活(93wg.com)微观生活-https://93wg.com/42188.html

在这里我们需要说下C和C++在定义Struct的区别, 先看下面2段代码:文章源自微观生活(93wg.com)微观生活-https://93wg.com/42188.html

include <stdio.h>struct S0{ char mName[10]; int mBornYear;};typedef struct _S1{ char mName[10]; int mBornYear;}S1;S0 sa;S1 sb;文章源自微观生活(93wg.com)微观生活-https://93wg.com/42188.html

那么上面的代码中对Struct的定义都对了吗?文章源自微观生活(93wg.com)微观生活-https://93wg.com/42188.html

熟悉C/C++的同学应当能够马上知道第二段的代码错了。文章源自微观生活(93wg.com)微观生活-https://93wg.com/42188.html

为何呢?文章源自微观生活(93wg.com)微观生活-https://93wg.com/42188.html

由于C语言中对于Struct的定义是需要使用struct S0 sa这类方式。文章源自微观生活(93wg.com)微观生活-https://93wg.com/42188.html

关于“Struct的定义”的内容,小编就分享到这里了,大家还有哪些需要补充的呢?无妨在评论区留言分享,让更多的朋友受益!您的每一个留言,和每一个赞,都是我前进的动力!喜欢的话记得收藏、分享给身旁的朋友。

 
青灯古佛
  • 版权声明: 本文部分文字与图片资源来自于网络,转载此文是出于传递更多信息之目的,若有来源标注错误或侵犯了您的合法权益,请立即通知我们(管理员邮箱:81118366@qq.com),情况属实,我们会第一时间予以删除,并同时向您表示歉意,谢谢!
  • 转载请务必保留本文链接:https://93wg.com/42188.html