在main(void)
初始化之后:
char *params[MAXPARAMS] = {NULL};
params
被传递给不同的函数。
如何在初始化期间“重置”数组(在其他一些函数存储字符串之后)?
编辑:params
用作参数列表,因此在某些操作后可能无法完全填充。通过'重置'我的意思是:我希望数组中没有字符串值,就像你{em> Java 中的clear
字符串数组一样,但保持相同的数组大小。
答案 0 :(得分:1)
考虑到内存分配是按顺序完成的并且没有释放,我认为你需要检查memset()
函数,如果你的目标是数组的值。请查看手册页here。
否则,如果您希望与初始化时间位于同一位置,则可以free()
分配的内存,并再次将变量设置为NULL
。
请澄清reset
的意思。那么我们就能以击球的方式提供帮助。
答案 1 :(得分:0)
我认为你想做的就是这个,
for(i=0;i<MAXPARAMS;i++)
memset(params[i],'\0',strlen(params[i]));
保持每个字符串的长度不变。
答案 2 :(得分:0)
如果params
已分配字符串,请先释放分配
for (size_t i=0; i<MAXPARAMS; i++) free(params[i]);
将所有内容都恢复为NULL
for (size_t i=0; i<MAXPARAMS; i++) params[i] = NULL;
// or
memset(params, 0, sizeof params);
建议合并:
for (size_t i=0; i<MAXPARAMS; i++) {
free(params[i]);
params[i] = NULL;
}