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<

相关推荐HOT
更多>>
没有内存泄漏,为什么还会OOM?
一、没有内存泄漏还会OOM的原因即使没有内存泄漏,也有可能出现OOM(Out of Memory)的情况,这通常是由于应用程序占用的内存超过了系统可用的...详情>>
2023-10-14 18:57:55
为什么redis小等于39字节的字符串是embstr编码,大于39是raw编码?
一、redis小于等于39字节的字符串是embstr编码,大于39是raw编码的原因Redis设计时考虑到了内存使用效率和CPU效率之间的平衡。因为Redis是一个...详情>>
2023-10-14 17:26:06
titaokr好用吗?
一、Titaokr的基本功能作为一款在线学习和考试平台,Titaokr为用户提供了一系列功能,包括课程管理、考试管理、学生管理、数据统计等。通过这些...详情>>
2023-10-14 16:19:17
二叉树、树、森林互相转换的意义是什么?
一、二叉树、树、森林互相转换的意义是什么二叉树、树、森林是数据结构中常见的一些形式,它们之间的转换意义在于可以方便地描述相应的问题,并...详情>>
2023-10-14 13:55:55