C的数据结构和C++的有区别吗?
一、C的数据结构和C++的区别
C语言和C++描述数据结构最大的区别在于设置思想,C语言是一种结构化程序设计语言,而C++是一种面向对象的程序设计语言,它两者的区别主要在于数据和操作的关系。
C语言是定义数据类型,数据类型定义变量,然后函数操作变量,换句话说C语言是“操作的数据”。
C++是定义类,类本身就具备操作,换句话说,C++是“数据的操作”。
而对于结构体,C++中结构体和类基本完全类似。C++中结构体能继承、能实现多态!结构体中也可以包含构造函数和析构函数和其他内部成员函数,因此结构体和类基本雷同!少数的区别是,类中的成员变量默认为私有,而结构体中则为公有。
虽然二者基本毫无区别,struct更适合作为数据结构的实现体,class更适合作为对象的实现体。
延伸阅读:
二、C/C++结构体占用内存大小问题
计算struct占用的内存大小需要考虑两点:一是各个分量的偏移地址的计算,二是最终整体大小要进行地址对齐(为了确保结构的大小为结构的字节边界数(即该结构中占用最大空间的类型所占用的字节数)的倍数,所以在为最后一个成员变量申请空间后,还会根据需要自动填充空缺的字节)。
struct{
char a[15]; //占15个字节,从0开始偏移,所以下面的int是从15开始偏移
int x;//偏移量 0x15+1=16
}s1;
cout< struct{ char a[15]; // int x; //偏移量 16字节 char b; //偏移量 21字节 }s2; //结果为21字节,按最大基本类型对齐,补充到24字节 cout< struct{ char a[15]; int x; //偏移量 16字节 double b; //double偏移量必须为8的倍数,故偏移量24字节 }s3;// cout< struct{ char a[15]; int x; //偏移量 16字节 double b; //偏移量 24字节 char c;//偏移量 32字节 }s3;//共33字节,按最大基本类型对齐,补充到40字节(整除8) cout<

猜你喜欢LIKE
相关推荐HOT
更多>>
分析型数据库是什么,和关系型数据库有什么区别?
一、分析型数据库分析型是从数据库的作用来划分的,其重点用来做数据分析(OLAP),大量都是select语句。还有一种是专门用来做事务处理的,一般...详情>>
2023-10-17 23:26:16
python self是什么意思,怎么使用?
一、python self介绍首先明确的是self只有在类的方法中才会有,独立的函数或方法是不必带有self的。self在定义类的方法时是必须有的,虽然在调...详情>>
2023-10-17 21:24:11
创建Project提交到Github需要做什么?
一、创建Project提交到Github需要做什么1、在Github新建一个repository。2、打开编译器,编辑最外面的.gitignore,如果没有就新建一个这样的文件...详情>>
2023-10-17 20:23:50
C/S和B/S架构的工作原理及优缺点?
一、C/S架构的工作原理C/S 架构中客户端和服务器之间通过网络连接进行通信,客户端发送请求后会等待服务器返回响应,直到收到响应后才能显示给...详情>>
2023-10-17 19:43:01热门推荐
Web前端开发是什么技术?
沸分析型数据库是什么,和关系型数据库有什么区别?
热对数量庞大的照片进行分类管理,较好的方便检索的方法是什么?
热web前端会用到哪些软件工具?
新Flash动画制作的原理是什么?
java/Python这么火,c++这么难,为什么我们还要选择用C++?
app开发的制作为什么报价和开发周期都不一样?
python self是什么意思,怎么使用?
什么是SEO?
PHP中的interface有什么用处?
创建Project提交到Github需要做什么?
为什么SwiftUI用struct来表示view?
C/S和B/S架构的工作原理及优缺点?
Flash为什么被淘汰了?
技术干货






