全国旗舰校区

不同学习城市 同样授课品质

北京

深圳

上海

广州

郑州

大连

武汉

成都

西安

杭州

青岛

重庆

长沙

哈尔滨

南京

太原

沈阳

合肥

贵阳

济南

下一个校区
就在你家门口
+
当前位置:首页  >  技术干货

C的数据结构和C++的有区别吗?

发布时间:2023-10-11 07:02:45
发布人:xqq

一、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<

#it技术干货

相关文章

红黑树为什么叫红黑树?

红黑树为什么叫红黑树?

2023-10-11
为什么说循环链表是线性结构?

为什么说循环链表是线性结构?

2023-10-11
操作系统内核中都用到了哪些数据结构?

操作系统内核中都用到了哪些数据结构?

2023-10-11
为什么数组索引数据那么快速、有效?

为什么数组索引数据那么快速、有效?

2023-10-11

最新文章

常见网络安全面试题:Windows常用的命令有哪些?

常见网络安全面试题:Windows常用的命令有哪些?

2023-10-09
常见网络安全面试题:根据设备告警如何展开排查?

常见网络安全面试题:根据设备告警如何展开排查?

2023-10-09
常见网络安全面试题:mysql加固呢?(数据库加固)

常见网络安全面试题:mysql加固呢?(数据库加固)

2023-10-09
常见网络安全面试题:windows和linux加固?(操作系统加固)

常见网络安全面试题:windows和linux加固?(操作系统加固)

2023-10-09
在线咨询 免费试学 教程领取