首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >二维数组值C++

二维数组值C++
EN

Stack Overflow用户
提问于 2011-02-12 23:03:52
回答 5查看 213.3K关注 0票数 43

我想声明一个2D数组并给它赋值,而不运行for循环。

我想我可以用以下方法

代码语言:javascript
复制
int array[5] = {1,2,3,4,5};

它可以很好地初始化2D数组。但显然我的编译器不喜欢这个。

代码语言:javascript
复制
/*
 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数组的正确方法。

EN

回答 5

Stack Overflow用户

回答已采纳

发布于 2011-02-12 23:09:14

如下所示:

代码语言:javascript
复制
int main()
{
    int arr[2][5] =
    {
        {1,8,12,20,25},
        {5,9,13,24,26}
    };
}

这应该包括在你的C++教科书中:你使用的是哪一本?

无论如何,最好还是考虑使用std::vector或一些现成的矩阵类,例如Boost。

票数 65
EN

Stack Overflow用户

发布于 2011-02-12 23:06:56

在C或C++中初始化多维数组的正确方法是

代码语言:javascript
复制
int arr[2][5] = {{1,8,12,20,25}, {5,9,13,24,26}};

如果你愿意的话,你可以用同样的技巧来初始化更高维的数组。

另外,在初始代码中要小心--您试图在数组中使用1索引偏移量来初始化它。这没有编译,但如果编译了,就会导致问题,因为C数组是0索引的!

票数 10
EN

Stack Overflow用户

发布于 2011-02-13 00:34:25

只想指出,您不需要指定数组的所有维度。

最左边的维度可以由编译器“猜测”。

代码语言:javascript
复制
#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;
}
票数 9
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/4981197

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档