在编程时用到了一个结构体,而该结构体类型的实例还需要连成一个单向链表,并且需要知道在该链表中包含有多少个节点。很容易想到可以使用STL中的队列之类的集合做到这一点,不过由于不是什么正经项目中要用的代码,所以就考虑能否在结构体中声明一个静态变量实现对节点的计数功能,因此有了如下代码。
#include <iostream>
using namespace std;
/* 结构体定义 */
typedef struct staticStruct
{
int data;
static int count; // 静态变量
struct staticStruct* next;
}STATICSTRUCT, *PSTATICSTRUCT;
int staticStruct::count = 0; // 初始化结构体静态变量值
void main()
{
PSTATICSTRUCT h;
/* 生成两个结构实例 */
PSTATICSTRUCT p = new STATICSTRUCT; // 第1个结构体
if(p)
{
h = p;
p->count++;
}
/* 输出当前结点中的count值 */
cout << "第1节点创建后: 1: " << h->count << endl;
p = NULL;
p = new STATICSTRUCT; // 第2个结构体
if(p)
{
h->next = p;
p->count++;
}
/* 输出两个结构中的静态成员值 */
cout << "第2节点创建后: 1: " << h->count << endl;
cout << "第2节点创建后: 2: " << h->next->count << endl;
/* 释放空间并输出count值 */
h->next->count--;
delete h->next;
cout << "第2节点删除后: 1: " << h->count << endl;
delete h;
}
编译并运行上述代码,其结果如下: