1

这是我的代码:

#include <cstdlib>
#include <stdio.h>

using namespace std;

int main(int argc, char** argv) {

    int a[] = {0,1,2,3,4,5,6,7};
    int array_grande[3][8];

    for(int m=0; m<3; m++) {
        for(int i=0; i<8; i++) {
                array_grande[m] = a[i];
        }
    }

    return 0;
}

我已将array_grande 声明为具有3 个位置且每个位置为8 个整数的数组,所以我想要的是一个数组数组。

array_grande = {{0,1,2,3,4,5,6,7},{0,1,2,3,4,5,6,7},{0,1,2,3,4,5,6,7}}

我制作的代码不起作用,我想这是因为array_grande. 谁能帮我一把?我想尽可能多地维护代码。提前致谢

4

5 回答 5

8
array_grande[m] = a[i];

你可能想要

array_grande[m][i] = a[i];

或者您可以使用copy标题algorithm中的函数:

std::copy(std::begin(a), std::end(a), array_grande[m]);

另一种方法是使用std::array

std::array<int, 8> a{{0,1,2,3,4,5,6,7}};
std::array<std::array<int, 8>, 3> array_grande;

for(auto& elem: array_grande)
    elem = a;

或者,更简单:

std::array<int, 8> a{{0,1,2,3,4,5,6,7}};
std::array<std::array<int, 8>, 3> array_grande{{a, a, a}};
于 2013-05-28T11:14:45.710 回答
2

有几种方法可以实现您的目标:

#include <cstdlib>
#include <stdio.h>
#include <memory.h>

int main(int argc, char** argv) {

    int a[] = {0,1,2,3,4,5,6,7};
    int array_grande[3][8];
    int array_grande_2[3][8] = { {0,1,2,3,4,5,6,7}, {0,1,2,3,4,5,6,7}, {0,1,2,3,4,5,6,7} };
    int array_grande_3[3][8];
    int array_grande_4[3][8];

    for(int m=0; m<3; m++) {
        for(int i=0; i<8; i++) {
                array_grande[m][i] = a[i];
        }
    }

    for(int m=0; m<3; m++) {
        for(int i=0; i<8; i++) {
                array_grande_3[m][i] = i;
        }
    }

    for(int m=0; m<3; m++) {
        memcpy(&array_grande_4[m], a, 8 * sizeof(int));
    }

    return 0;
}
于 2013-05-28T11:23:58.017 回答
1

如果你看看你的内在任务:

array_grande[m] = a[i];

您将int( a[i]) 分配给数组或指向 int ( array_grande[m]) 的指针。你只需要改变它如下:

array_grande[m][i] = a[i];
于 2013-05-28T11:15:55.733 回答
1
#include <cstdlib>
#include <stdio.h>

using namespace std;

int main(int argc, char** argv) {

    int a[] = {0,1,2,3,4,5,6,7};
    int array_grande[3][8];

    for(int m=0; m<3; m++) {
        for(int i=0; i<8; i++) {
                array_grande[m][i] = a[i];
        }
    }

    return 0;
}

您需要在 arrey 中添加 [i],因为它是一个二维数组。

通过 array_grande[m] 它仍然是一维数组,因此您需要添加 [] 以使 tham 具有相同的维度

于 2013-05-28T11:19:51.957 回答
1
int a[] = {0,1,2,3,4,5,6,7};

a[i]代表一个 int0 1

int array_grande[3][8];

您创建一个二维数组 int。

array_grande[0] -> | | | | | | | | | 
array_grande[1] -> | | | | | | | | |
array_grande[2] -> | | | | | | | | |

array_grande[i]因为它是一维数组,所以已经有一个地址。你不能分配a[i]给它。

您需要参考每行中的位置来存储值。

for(int m=0; m<3; m++) 
{
    for(int i=0; i<8; i++) 
    {
            array_grande[m][i] = a[i];
    }
}

*(array_grande[m] + i) = a[i]获取行并前进i位置

于 2013-05-28T11:19:56.833 回答