【发布时间】:2018-10-30 13:50:13
【问题描述】:
使用全局变量,例如:
params_vector[100][100] = {};
是否可以“重置”或“清除”该数组中的值,使其与初始化时相同? char *arg[] 有很多例子(arg[i] = NULL 有效),但没有一个像这样的“矩阵”。
【问题讨论】:
-
它不是字符串的向量。它是数组的数组。
-
谢谢!!!我不确定是哪一个。
使用全局变量,例如:
params_vector[100][100] = {};
是否可以“重置”或“清除”该数组中的值,使其与初始化时相同? char *arg[] 有很多例子(arg[i] = NULL 有效),但没有一个像这样的“矩阵”。
【问题讨论】:
如果这是一个char的多维数组,你可以简单地通过调用“重置”它
#include <string.h>
memset(params_vector, 0, sizeof params_vector);
如果您只需要将每个字符串的第一个字节设置为0,使用for循环可能会更有效。
【讨论】:
假设这是一个由char 组成的多维数组,例如
char params_vector[N][M];
对于 N 和 M 的某些值 - 你不需要需要memset()整个东西到'\0';将每个字符串的第一个字符设置为'\0'就足够了:
for(size_t i = 0; i < N; i++) {
params_vector[i][0] = '\0';
}
但是,如果N 很小,则此优化可能不值得,并且
memset(params_vector, '\0', M * N);
会好的。
【讨论】:
使用memset:
memset(params_vector, 0, sizeof(params_vector));
【讨论】:
params_vector 具有非整数成员,则不能完全移植。
char * arg[],我认为假设他/她在谈论字符是合理的。
= {}),因此需要清除整个区域。