C++中的结构体定义问题

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了C++中的结构体定义问题相关的知识,希望对你有一定的参考价值。

typedef struct snode //定义链栈结点类型
int data;
struct snode *next;
linkstack,*top;
这里的snode和linkstack有什么关系又有什么区别?为什么有的指针定义为snode类型,有的又定义为linkstack类型?还有就是为什么有时候写为:typedef struct...linkstack;没有snode呢?

typedef struct snode //定义链栈结点类型
int data;
struct snode *next;
linkstack,*top;

这段代码中,snode是结构名,可能是serial node的缩写吧;linkstack是一个snode类型的对象,*top是指向一个snode对象的指针,这两个都不是结构体定义的一部分,可以算是附加部分,顺便定义了两个变量而已,所以不是必须的,少一个也很正常。。
参考技术A snode是你定义这个结构体的名字,以便以后使用。
例如:你可以在以后这样使用它,struct snode linkstack1;
而linkstack是你定义结构体时使用typedef起的别名,以后可以直接使用的

C++结构体中定义函数(C++结构体与C语言结构体区别)(C++结构体与C++类的区别)(结构体函数)

文章目录

C++结构体与C语言结构体区别

C中的结构体和C++中结构体的不同之处:
在C中的结构体只能自定义数据类型,结构体中不允许有函数,而C++中的结构体可以加入成员函数。

C++结构体与C++类的区别

C++中的结构体和类的异同:

  • 一、相同之处:结构体中可以包含函数;也可以定义public、private、protected数据成员;定义了结构体之后,可以用结构体名来创建对象。但C中的结构体不允许有函数;也就是说在C++当中,结构体中可以有成员变量,可以有成员函数,可以从别的类继承,也可以被别的类继承,可以有虚函数。
  • 二、不同之处:结构体定义中默认情况下的成员是public,而类定义中的默认情况下的成员是private的。类中的非static成员函数有this指针,类的关键字class能作为template模板的关键字,即template<class T> class A; 而struct不可以。

实际上,C中的结构体只涉及到数据结构,而不涉及到算法,也就是说在C中数据结构和算法是分离的,而到C++中一类或者一个结构体可以包含函数(这个函数在C++我们通常中称为成员函数),C++中的结构体和类体现了数据结构和算法的结合。

参考文章:c++中结构体可以定义一个函数么

以上是关于C++中的结构体定义问题的主要内容,如果未能解决你的问题,请参考以下文章

C++结构体中定义函数(C++结构体与C语言结构体区别)(C++结构体与C++类的区别)(结构体函数)

C++结构体中定义函数(C++结构体struct与C语言结构体区别)(C++结构体与C++类的区别)(结构体函数)

C++中能不能用结构体模板

C语言结构体指针定义问题 - C / C++ -

c++类里面定义结构体怎么做

C++中结构体的大小