【答疑释惑】结构体字节数如何计算

1 C语言中一个结构体在内存中占的字节数如何计算? 先看下面一个结构体:

struct stru {

int a;

char c;

};

那么这个结构体在内存中几个字节呢?初学者可能说,int是4个字节,char是1个字节,那么这个结构体就是5个字节。很遗憾,这个结果是错误的。

其实这个结构体的长度是8个字节。

这牵涉到一个结构体字节对齐问题 ,具体结构体为什么要字节对齐,又是如何对齐的呢?

稍后我们会在我们的网站上详细讲解下结构体字节对齐的问题。请关注我们的网站:www.coderonline.net

2 问:如果有两个类,分别在两个头文件中定义,但是这个两个类中的成员函数分别要引用对方,但是头文件一但互相包含,就会出现C2061错误,不识别类,我问我同学,他说他用互相友元解决了。我想问一下为什么友元可以。

答:其实这是类的封装性造成的,因为友元破坏了封装性所以可以。 问:有没有别的办法,不使用友元 答:对方对象调用对方公共方法

原文发布于微信公众号 - 程序员互动联盟(coder_online)

原文发表时间:2015-07-09

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏程序员互动联盟

【编程基础】什么是内存泄露

内存泄漏也称作“存储渗漏”,用动态存储分配函数动态开辟的空间,在使用完毕后未释放,结果导致一直占据该内存单元。直到程序结束。(其实说白了就是该内存空间使用完毕之...

3356
来自专栏芋道源码1024

【死磕Java并发】—– Java内存模型之重排序

在执行程序时,为了提供性能,处理器和编译器常常会对指令进行重排序,但是不能随意重排序,不是你想怎么排序就怎么排序,它需要满足以下两个条件: 在单线程环境下不能改...

3497
来自专栏猿人谷

总结---5

1.语义搜索 所谓语义搜索,是指搜索引擎的工作不再拘泥于用户所输入的关键字,而是准确捕捉到用户所输入语句后面的真正意图,并以此来进行搜索,微软、谷歌和Fac...

18110
来自专栏我是攻城师

数据结构的基本概念

2934
来自专栏chenssy

【死磕Java并发】-----Java内存模型之重排序

在执行程序时,为了提供性能,处理器和编译器常常会对指令进行重排序,但是不能随意重排序,不是你想怎么排序就怎么排序,它需要满足以下两个条件: 1. 在单线程环境...

1142
来自专栏Fundebug

JavaScript中Map和ForEach的区别

963
来自专栏chenssy

【死磕Java并发】—–Java内存模型之重排序

在执行程序时,为了提供性能,处理器和编译器常常会对指令进行重排序,但是不能随意重排序,不是你想怎么排序就怎么排序,它需要满足以下两个条件: 在单线程环境下不能改...

2466
来自专栏用户2442861的专栏

字符编码笔记:ASCII,Unicode和UTF-8

今天中午,我突然想搞清楚Unicode和UTF-8之间的关系,于是就开始在网上查资料。

601
来自专栏java系列博客

深入理解Java内存模型(二)——重排序

1794
来自专栏Kotlin源码阅读

kotlin源码阅读——函数式编程

我主要写Kotlin源码阅读,函数式编程的基本概念,概念大家可以在网上做一些了解,这里推荐一下百度百科的定义,函数式编程概念,蛮清晰的。

2405

扫码关注云+社区