我在全球范围内声明了以下内容
char a[20] = " ";
char b[20] = " ";
char c[20] = " ";
char d[20] = " ";
我需要在方法中将这些变量设置为NULL。所以我使用
void mymethod()
{
a[10]=" ";
b[10]=" ";
c[10]=" ";
d[10]=" ";
}
但变量仍然保留了旧的价值。我做错了什么?
答案 0 :(得分:1)
char a[20] = "";
这是在声明期间初始化数组。
而
a[10] = "";
这实际上是为数组中的元素设置一个值。
尝试使用
memset(a,0,sizeof(a));
在函数中初始化数组。
答案 1 :(得分:0)
char a[20] = " ";
char b[20] = " ";
char c[20] = " ";
char d[20] = " ";
a, b, c, d
为const
,无法更改。
如果要将数组的元素设置为0(NULL),请使用memset
memset(a, 0, sizeof(a));
如果要将变量a设置为NULL,则应将a
声明为指针。
char *a = " ";
a = NULL;
答案 2 :(得分:0)
char a[20] = " ";
此处您正在初始化名为char
a
数组
a[10]=" ";
在这里,您将字符串文字{' ','\0'}
分配给数组a中的第11个字符。这是未定义的行为。
我需要在方法中将这些变量设置为NULL。
首先,我知道这是挑剔,但它仍然很重要,c没有方法。 c有功能。
如果您只想将数组清零,可以这样做(假设您的char数组是全局的)
void clearString (char *string, int lenght)
{
memset(string, '\0', lenght);
}
然后你可以这样打电话:
clearString(a,20);