【发布时间】:2016-03-07 08:26:05
【问题描述】:
#include <iostream>
#include <cstdio>
#include <cstdlib>
#include <cstring>
using namespace std;
int color[1001][1001];
int main() {
int i, j;
memset(color, 1, sizeof(color[0][0]) * 2 * 2);
for(i = 0; i < 4; i++) {
for(j = 0; j < 4; j++) {
printf("%d ", color[i][j]);
}
printf("\n");
}
printf("\n");
return 0;
}
输出:
16843009 16843009 16843009 16843009
0 0 0 0
0 0 0 0
0 0 0 0
为什么不分配 1?为什么它不打印 1 而不是 16843009 ?如何分配整数 1?
但是如果我写memset(color, 0, sizeof(color[0][0]) * 2 * 2); 那么输出:
0 0 0 0
0 0 0 0
0 0 0 0
0 0 0 0
这是为什么?
任何答案都将受到高度赞赏。提前致谢。
【问题讨论】:
-
从手册页剪切'n'paste - “memset - 用常量字节填充内存”
-
因为您没有阅读您正在使用的函数的文档。 ;-)