相关疑难解决方法(0)

使用一个值初始化整个2D数组

有以下声明

int array[ROW][COLUMN]={0};
Run Code Online (Sandbox Code Playgroud)

我得到所有零的数组,但使用下面的一个

int array[ROW][COLUMN]={1};
Run Code Online (Sandbox Code Playgroud)

我没有得到所有值的数组.默认值仍为0.

为什么会出现这种情况?如何使用所有1进行初始化?

编辑:我刚刚理解使用memset值为1,将每个字节设置为1,因此每个数组单元格的实际值不会是1但是16843009.如何将其设置为1?

c arrays initialization

65
推荐指数
6
解决办法
20万
查看次数

如何在C中正确设置,访问和释放多维数组?

关于C中的多维数组,我已经看过几十个关于"我的代码有什么问题"的问题.出于某种原因,人们似乎无法理解这里发生的事情,所以我决定回答这个问题作为对其他人的参考:

如何在C中正确设置,访问和释放多维数组?

如果其他人有有用的建议,请随时发布!

c malloc dynamic multidimensional-array

24
推荐指数
3
解决办法
5435
查看次数

初始化C动态数组

如何初始化使用malloc分配的动态数组?我可以这样做:

int *p;
p = malloc(3 * sizeof(*p));
p = {0, 1, 2};

...

free(p);
Run Code Online (Sandbox Code Playgroud)

或者我需要做这样的事情:

int *p, x;
p = malloc(3 * sizeof(*p));
for (x = 0; x < 3; x++)
    p[x] = 0;

...

free(p);
Run Code Online (Sandbox Code Playgroud)

或者有更好的方法吗?

c arrays malloc

12
推荐指数
4
解决办法
9万
查看次数

C++在初始化程序中指定数组索引,如C

我之前使用过C(嵌入式东西),我可以像这样初始化我的数组:

int widths[] = { [0 ... 9] = 1, [10 ... 99] = 2, [100] = 3 };
Run Code Online (Sandbox Code Playgroud)

即我可以在初始化程序中指定索引.目前我正在学习Qt/C++,我无法相信这在C++中是不受支持的.

我有这个选项:-std=gnu++0x,但无论如何它不受支持.(我不知道它是否在C++ 11中受支持,因为Qt在gcc 4.7.x中工作有问题)

那么,它真的不支持C++吗?或者也许有办法启用它?

UPD:目前我想初始化const数组,所以std::fill不行.

c c++

10
推荐指数
2
解决办法
4390
查看次数

如何用1个真正大的数组快速初始化

我有一个很大的阵列:

int* arr = new int[BIGNUMBER];
Run Code Online (Sandbox Code Playgroud)

如何用1号码快速填充它.通常我会这样做

for(int i = 0; i < BIGNUMBER; i++)
    arr[i] = 1
Run Code Online (Sandbox Code Playgroud)

但我认为这需要很长时间.

我可以使用memcpy或类似吗?

c++ arrays performance

6
推荐指数
1
解决办法
4742
查看次数

如何仅使用-1值初始化数组

可能重复:
如何在C中
初始化一个int初始化数组

我想知道初始化一个int数组只包含-1值的最快/最简单的方法.我需要的数组是90英特长,所以直截了当的方法应该像这样初始化它:

int array[90]={-1, -1, -1, ...};
Run Code Online (Sandbox Code Playgroud)

但我只想使用一次数组,所以我想能够动态地使用它,并且能够在程序中使用它后释放它,所以我更喜欢快速的方式calloc,但不是零,而是-1课程.

c arrays

5
推荐指数
2
解决办法
1万
查看次数