原创 程序员无言 C语言编程学习基地 2020-06-29

1. C++语言将struct当成类来处理的,所以C++的struct可以包含C++类的所有东西,例如构造函数,析构函数,友元等,C++的struct和C++类唯一不同就是

C/C++编程笔记:C语言和C++语言的 struct 对比!区别在哪里?_c++

struct成员默认的是public, C++默认private。而C语言struct不是类,不可以有函数,也不能使用类的特征例如public等关键字 ,也不可以有static关键字。

2. C++ struct里面成员初始化的形式和类是相同的,不可以直接初始化,就是不可以定义成员的时候同时初始化。C语言 struct中间的某个类型(例如int)也不可以直接初始化。

   就是说下面int a = 0;在C++和C语言里面都是不能通过的。

C/C++编程笔记:C语言和C++语言的 struct 对比!区别在哪里?_c++_02

3.  初始化方式,C++ struct的初始化,C++不仅拥有C语言的初始化方式。如下:

C/C++编程笔记:C语言和C++语言的 struct 对比!区别在哪里?_c++_03

也可以使用类的初始化方式


C/C++编程笔记:C语言和C++语言的 struct 对比!区别在哪里?_c++_04

4. 类型不同,下面代码:


C/C++编程笔记:C语言和C++语言的 struct 对比!区别在哪里?_c++_05

在C里面实际上数据类型为 (struct HE),所以定义一个结构HE变量都要 带上struct. 

structHE a;   //C语言 变量方式

而在C++里面实际上数据类型为HE(主要是因为结构体被当成类对待了),所以定义变量不需要 struct.

HE a; //C++语言 变量

5. typedef struct 在C++和C语言中都是一样的功能,定义别名。但是要注意下面的代码的区别

//代码一

C/C++编程笔记:C语言和C++语言的 struct 对比!区别在哪里?_c++_06

//代码二

C/C++编程笔记:C语言和C++语言的 struct 对比!区别在哪里?_c++_07

上面两个代码省略 struct的名字 HE都是可以的。

总结:C++语言因为是和C语言兼容的,所以C语言的语法在C++编译器里不会出错,但是程序员最好知道什么是C语言,什么是C++语言。