01
2014/08
引言今天一个同学问我结构体怎么用,他说之前可以运行的代码突然不能运行了,说编译器报的错是“undeclared”,但是明明在h文件中定义了这个结构体大体上代码是这样的://main.h
struct Node
{
int value;
Node *next;
}; //main.c
Node *n = (Node *)malloc(sizeof(Node)); 看上去并没有问题,可是编译器确实报了undeclared错,这是为什么呢?下面就三个问题说一下 结构体C语言中,结构体是一个非常常用的基本的语言特性,其优势在于,将数据进行封装,但是C语言中的结构体和C++中的struct是有着本质区别的,C++中的struct并不是传统意义上的结构体,而是默认为public的类,C语言中的struct中是绝对不允许有函数的,但是在C++中的struct是可以的,这是因为在C++中,struct并不是指结构体,只是默认为public的class,因此在显式声明类访问权限的例子中,struct和class是完全没有任何区别的,这也就是为什么在.cc的工程中可以使用的struct的定义和使用方法在.c的工程中却不行,因为C语言中的struct和C++中的struct根本就是两种完全不同的东西,只是有的时候可以做相同的事而已,两者本质上
#技术帖
#c语言
#结构体
#技术分享