C 如何在初始化后或循环中第二次将数组的所有元素设置为0?

C 如何在初始化后或循环中第二次将数组的所有元素设置为0?,c,arrays,C,Arrays,我一直在学习数组的基本知识。我用谷歌搜索了一下,但我无法解决这个问题。这个问题是以概念为导向的,但我无法弥合这一差距。请帮我解决这个问题 我第一次非常清楚初始化数组,但下次无法清除数组:-(:-( 在GCC编译器中编译时,它的给定错误 error: [11707] syntax error before '{' token 请帮我解决这个问题 提前感谢。没有任何优化的memset的简单实现是一个将数组的每个位置设置为所需值的循环。问题是memset对每个字节执行此操作,而这不是您想要的。我建议

我一直在学习数组的基本知识。我用谷歌搜索了一下,但我无法解决这个问题。这个问题是以概念为导向的,但我无法弥合这一差距。请帮我解决这个问题

我第一次非常清楚初始化数组,但下次无法清除数组:-(:-(

在GCC编译器中编译时,它的给定错误

error: [11707] syntax error before '{' token
请帮我解决这个问题


提前感谢。

没有任何优化的
memset
的简单实现是一个将数组的每个位置设置为所需值的循环。问题是memset对每个字节执行此操作,而这不是您想要的。我建议您实现memset的替代方案:

int *mymemset (int *s, int v, size_t n) {
    unsigned int *p = s;
    while(n--) {
        *p++ = (unsigned int)v;
    }

    return s;
}
并使用它初始化数组

myArray[10000] = { 0 };
是一个赋值,不是一个声明,所以它不起作用。你应该循环

int myArray[10000] = { 0 };

for(int i = 0; i < 1000; i++) {
    for (int j = 0; j < 10000; j++) {
        myArray[j] = ;  // put your value here.
    }
}
int-myArray[10000]={0};
对于(int i=0;i<1000;i++){
对于(int j=0;j<10000;j++){
myArray[j]=;//在这里输入值。
}
}

我不确定这样做的目的。基准测试?

不是
memset()
适合你吗?…
memset()
无法将每个值设置为5.memset,使用激励索引或指针循环,bzero…也许你应该换一个方向?@Martin,我不能使用memset,因为有一些限制。有没有其他方法可以实现这一点?我真的不明白,这是反对票。有人可以解释吗?如果你正在初始化a在每次迭代中,您也可以在循环中声明数组。但是我的数组是全局范围的(在问题中提到),不是自动/本地作用域。我正在使用数组进行许多其他数据操作。哦..好的。那么你有一个全局数组,你想用0s或任何1k次进行初始化吗?这不是设计问题吗?是的,但我必须强烈支持此选项,因为代码的多个部分都在处理数据。非常感谢!!,但不能进行上表决,beca使用我的声望低于15。顺便说一句,我必须调用mymemset(myArray,0,10000);不是吗?是的。或者
mymemset(myArray,5,10000);
。试试看这是否解决了您的问题。如果解决了,接受作为答案。请注意
*p++=(unsigned int)v、 
将无法设置负值。如果要使用负数,请删除强制转换。
myArray[10000] = { 0 };
int myArray[10000] = { 0 };

for(int i = 0; i < 1000; i++) {
    for (int j = 0; j < 10000; j++) {
        myArray[j] = ;  // put your value here.
    }
}