![v2-80b65cea5313d518a9b87f2391c95dec_1440w.jpg?source=172ae18b](http://img-03.proxy.5ce.com/view/image?&type=2&guid=94c3483f-b92e-eb11-8da9-e4434bdf6706&url=https://pic1.zhimg.com/v2-80b65cea5313d518a9b87f2391c95dec_1440w.jpg?source=172ae18b)
1. C++语言将struct当成类来处理的,所以C++的struct可以包含C++类的所有东西,例如构造函数,析构函数,友元等,C++的struct和C++类唯一不同就是struct成员默认的是public, C++默认private。而C语言struct不是类,不可以有函数,也不能使用类的特征例如public等关键字 ,也不可以有static关键字。
2. C++ struct里面成员初始化的形式和类是相同的,不可以直接初始化,就是不可以定义成员的时候同时初始化。C语言 struct中间的某个类型(例如int)也不可以直接初始化。
就是说下面int a = 0;在C++和C语言里面都是不能通过的。
![v2-066c3803399a4f165aae87b743679ecf_b.jpg](http://img-02.proxy.5ce.com/view/image?&type=2&guid=94c3483f-b92e-eb11-8da9-e4434bdf6706&url=https://pic4.zhimg.com/v2-066c3803399a4f165aae87b743679ecf_b.jpg)
3. 初始化方式,C++ struct的初始化,C++不仅拥有C语言的初始化方式。如下:
![v2-ee9cc4e01adb947a464b3ee86a2ddc81_b.jpg](http://img-01.proxy.5ce.com/view/image?&type=2&guid=94c3483f-b92e-eb11-8da9-e4434bdf6706&url=https://pic2.zhimg.com/v2-ee9cc4e01adb947a464b3ee86a2ddc81_b.jpg)
也可以使用类的初始化方式
![v2-4d0290c93dc192bb1227e9cc56143aca_b.jpg](http://img-01.proxy.5ce.com/view/image?&type=2&guid=94c3483f-b92e-eb11-8da9-e4434bdf6706&url=https://pic3.zhimg.com/v2-4d0290c93dc192bb1227e9cc56143aca_b.jpg)
4. 类型不同,下面代码:
![v2-88ee6fec390e8adaedc659f71891ce16_b.jpg](http://img-03.proxy.5ce.com/view/image?&type=2&guid=94c3483f-b92e-eb11-8da9-e4434bdf6706&url=https://pic3.zhimg.com/v2-88ee6fec390e8adaedc659f71891ce16_b.jpg)
在C里面实际上数据类型为 (struct HE),所以定义一个结构HE变量都要 带上struct.
structHE a; //C语言 变量方式
而在C++里面实际上数据类型为HE(主要是因为结构体被当成类对待了),所以定义变量不需要 struct.
HE a; //C++语言 变量
5. typedef struct 在C++和C语言中都是一样的功能,定义别名。 但是要注意下面的代码的区别
//代码一
![v2-3c5358c206c36b25b8ad361342822350_b.jpg](http://img-03.proxy.5ce.com/view/image?&type=2&guid=94c3483f-b92e-eb11-8da9-e4434bdf6706&url=https://pic1.zhimg.com/v2-3c5358c206c36b25b8ad361342822350_b.jpg)
//代码二
![v2-2488af9cd1c6107f86018bf79b6e38b4_b.jpg](http://img-01.proxy.5ce.com/view/image?&type=2&guid=94c3483f-b92e-eb11-8da9-e4434bdf6706&url=https://pic1.zhimg.com/v2-2488af9cd1c6107f86018bf79b6e38b4_b.jpg)
上面两个代码省略 struct的名字 HE都是可以的。
总结:C++语言因为是和C语言兼容的,所以C语言的语法在C++编译器里不会出错,但是程序员最好知道什么是C语言,什么是C++语言。
自学C/C++编程难度很大,不妨和一些志同道合的小伙伴一起学习成长!
C语言C++编程学习交流圈子,【点击进入】微信公众号:C语言编程学习基地
有一些源码和资料分享,欢迎转行也学习编程的伙伴,和大家一起交流成长会比自己琢磨更快哦!
![v2-4d4ba2ec17b98ba29570d2aad323c1f2_b.jpg](http://img-03.proxy.5ce.com/view/image?&type=2&guid=94c3483f-b92e-eb11-8da9-e4434bdf6706&url=https://pic3.zhimg.com/v2-4d4ba2ec17b98ba29570d2aad323c1f2_b.jpg)
学习C/C++编程知识,了解程序员更多小知识,欢迎关注笔者学习专栏:
C/C++学习笔记zhuanlan.zhihu.com![v2-16828eba753a3fad72b4536eb37f185b_ipico.jpg](http://img-02.proxy.5ce.com/view/image?&type=2&guid=94c3483f-b92e-eb11-8da9-e4434bdf6706&url=https://pic4.zhimg.com/v2-16828eba753a3fad72b4536eb37f185b_ipico.jpg)