我坚持使用数组的基础知识。我用谷歌搜索,但我无法解决这个问题。这个问题是以概念为导向的,但我无法弥合差距。请帮我解决这个问题。
我第一次初始化数组非常清楚,但是下次无法清除数组:-(: - (
int myArray[10] = { 5, 5, 5, 5, 5, 5, 5, 5, 5, 5 }; // All elements of myArray are 5
int myArray[10] = { 0 }; // Will initialize all elements to 0
int myArray[10] = { 5 }; // Will initialize myArray[0] to 5 and other elements to 0
static int myArray[10]; // Will initialize all elements to 0
int myArray[10];// This will declare and define (allocate memory) but won’t initialize
int i; // Loop variable
for (i = 0; i < 10; ++i) // Using for loop we are initializing
{
myArray[i] = 5;
}
问题陈述:
我正在使用一个大小为10000的全局数组。我有1k迭代循环,我必须将数组设置为'零'或预定义值,即每次迭代为5。
我在交互结束时这样做:
myArray[10000] = { 0 };
在GCC编译器中编译时出错。
error: [11707] syntax error before '{' token
请帮我解决这个问题。
提前致谢。
答案 0 :(得分:3)
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.
}
}
我不确定这个目的。基准?
答案 1 :(得分:0)
memset
的简单实现,没有任何优化,是一个循环,将数组的每个位置设置为所需的值。问题是memset为每个字节执行此操作,并且它不是您想要的。我建议你实现memset的替代方法:
int *mymemset (int *s, int v, size_t n) {
unsigned int *p = s;
while(n--) {
*p++ = (unsigned int)v;
}
return s;
}
并用它来初始化你的数组。