千锋教育-做有情怀、有良心、有品质的职业教育机构

手机站
千锋教育

千锋学习站 | 随时随地免费学

千锋教育

扫一扫进入千锋手机站

领取全套视频
千锋教育

关注千锋学习站小程序
随时随地免费学习课程

当前位置:首页  >  技术干货  > C的数据结构和C++的有区别吗?

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

来源:千锋教育
发布人:xqq
时间: 2023-10-11 07:02:45 1696978965

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

声明:本站稿件版权均属千锋教育所有,未经许可不得擅自转载。
10年以上业内强师集结,手把手带你蜕变精英
请您保持通讯畅通,专属学习老师24小时内将与您1V1沟通
免费领取
今日已有369人领取成功
刘同学 138****2860 刚刚成功领取
王同学 131****2015 刚刚成功领取
张同学 133****4652 刚刚成功领取
李同学 135****8607 刚刚成功领取
杨同学 132****5667 刚刚成功领取
岳同学 134****6652 刚刚成功领取
梁同学 157****2950 刚刚成功领取
刘同学 189****1015 刚刚成功领取
张同学 155****4678 刚刚成功领取
邹同学 139****2907 刚刚成功领取
董同学 138****2867 刚刚成功领取
周同学 136****3602 刚刚成功领取
相关推荐HOT