字符串数组如何清空?

来源:百度知道 编辑:UC知道 时间:2024/06/15 08:48:51
typedef char DataType;
typedef struct node
{
DataType data;
struct node *lchild, *rchild;
} BTNode;
BTNode *s[MaxSize]

怎么在调用后,清空*s[MaxSize]为NULL

在c++中:
for(int i = 0; i < MaxSize; i++)
{
if(s[i] != NULL)
delete s[i]; //释放s[i]占据的内存
}

上述做法是将s[MaxSize]数组中存储的指针指向的内存释放掉,假定这些指针的初始化是new BTNode 后产生的 。
由于BTNode *s[MaxSize];这句的定义表明是在栈上定义的内存,它会在程序退出时自动释放,如果它是定义在函数内的话,那么它将在函数调用完成之后自动释放。因此你所问的关于*s[MaxSize]的空间的释放实际是每个s[i]元素指向的内存的释放。因此,你只要按照上述方法书写代码即可释放掉整个数组指向的内存。
我这样解释可以吗?

释放以后其实里面还是有内容的,并不干净,是你之前使用遗留下来的,直到你下一次再对其赋值为止。
正确的做法是;对于每个数组元素,都赋值为你想要的值,这就看你对“清空”的定义了。。。

node是个双向链表吧,要清除链表可用下面的函数,只要将链表的指针作为参数添入即可。

void free_node (node *p)
{
node *next = NULL;

while (p != NULL)
{
next = p->rchild;(假定rchild为下一个元素的指针)
free(p);
p = next;
}
}

写入空格不久可以了
或者写入0
或者释放空间