我想声明一个2D数组并给它赋值,而不运行for循环。
我想我可以用以下方法
int array[5] = {1,2,3,4,5};它可以很好地初始化2D数组。但显然我的编译器不喜欢这个。
/*
1 8 12 20 25
5 9 13 24 26
*/
#include <iostream.h>
int main()
{
int arr[2][5] = {0}; // This actually initializes everything to 0.
arr [1] [] = {1,8,12,20,25}; // Line 11
arr [2] [] = {5,9,13,24,26};
return 0;
}J:\CPP\Grid>bcc32.exe Grid.cpp
Borland C++ 5.5.1 Win32版权(c) 1993,2000 Borland
Grid.cpp:
错误E2188 Grid.cpp 11: main()函数中的表达式语法
错误E2188 Grid.cpp 12: main()函数中的表达式语法
警告W8004 Grid.cpp 14:“arr”被分配给一个从未在funct ()中使用的值
* 2编译中的错误*
请帮助使用我的一组值初始化2d数组的正确方法。
发布于 2011-02-12 23:09:14
如下所示:
int main()
{
int arr[2][5] =
{
{1,8,12,20,25},
{5,9,13,24,26}
};
}这应该包括在你的C++教科书中:你使用的是哪一本?
无论如何,最好还是考虑使用std::vector或一些现成的矩阵类,例如Boost。
发布于 2011-02-12 23:06:56
在C或C++中初始化多维数组的正确方法是
int arr[2][5] = {{1,8,12,20,25}, {5,9,13,24,26}};如果你愿意的话,你可以用同样的技巧来初始化更高维的数组。
另外,在初始代码中要小心--您试图在数组中使用1索引偏移量来初始化它。这没有编译,但如果编译了,就会导致问题,因为C数组是0索引的!
发布于 2011-02-13 00:34:25
只想指出,您不需要指定数组的所有维度。
最左边的维度可以由编译器“猜测”。
#include <stdio.h>
int main(void) {
int arr[][5] = {{1,2,3,4,5}, {5,6,7,8,9}, {6,5,4,3,2}};
printf("sizeof arr is %d bytes\n", (int)sizeof arr);
printf("number of elements: %d\n", (int)(sizeof arr/sizeof arr[0]));
return 0;
}https://stackoverflow.com/questions/4981197
复制相似问题