C语言与c++中结构体之间的区别

1.C中结构体不能有成员函数,而C++中可以

2.C结构体不能在结构体中初始化成员变量,而C++结构体可以

3.C结构体的空结构体sizeof为0,C++的sizeof为1。

C、C++语言要求空结构体的实例在内存中具有不同的地址,但是C++另外还要求空结构体的地址是唯一的,即使结构体没有任何成员。

注意:空结构体的大小只会影响结构体实例占用的内存空间,并不影响结构体作为成员变量时的大小。

4.C结构体只有public一种权限,而C++结构体有public、private、protect三种修饰符

5.C结构体在定义时除非使用typedef,否则之后定义变量都必须跟上struct + 结构体名,而C++结构体可以直接使用结构体名,不需要加struct。

c语言代码测试:

#include
struct node{};
struct node2{
	struct node p1;
	void add(int a,int b);//field ‘add’ declared as a function  成员函数出错
	int sum=0;// expected ‘:’, ‘,’, ‘;’, ‘}’ or ‘__attribute__’ before ‘=’ token赋初始值出错
};
int main(){
	printf("%ld",sizeof(struct node));//0
	printf("%ld",sizeof(struct node2));//0
}

c++代码测试:

#include
#include
using namespace std;
struct node{};
struct node2{
	struct node p1;
};
int main(){
	cout<

你可能感兴趣的:(c语言,c++,算法)