C+中的二维动态数组+; 如果在C++中声明一个2D动态数组,使用以下代码: int *arr2D[2]; //allocating rows statically for(int i=0;i<2;i++) { arr2D[i]=new int[6]; //for each row, 6 columns are dynamically allocated } int*arr2D[2]//静态分配行 对于(int i=0;i

C+中的二维动态数组+; 如果在C++中声明一个2D动态数组,使用以下代码: int *arr2D[2]; //allocating rows statically for(int i=0;i<2;i++) { arr2D[i]=new int[6]; //for each row, 6 columns are dynamically allocated } int*arr2D[2]//静态分配行 对于(int i=0;i,c++,traversal,dynamic-arrays,C++,Traversal,Dynamic Arrays,您应该使用循环来输入数组并显示它: int *arr2D[2]; for(int i = 0; i < 2; i++) arr2D[i] = new int[6]; for(int i = 0; i < 2; i++) for(int j(0); j < 6; j++){ std::cout << "arr2D[" << i << "][" << j << "]: ";

您应该使用循环来输入数组并显示它:

int *arr2D[2];

for(int i = 0; i < 2; i++)
    arr2D[i] = new int[6];

for(int i = 0; i < 2; i++)
    for(int j(0); j < 6; j++){
        std::cout << "arr2D[" << i << "][" << j << "]: ";
        std::cin >> arr2D[i][j];
        std::cout << std::endl;
    }

for(int i = 0; i < 2; i++)
    for(int j(0); j < 6; j++){
        std::cout << "arr2D[" << i << "][" << j << "]: "
            << arr2D[i][j] << std::endl;
    }

你为什么要动态分配?<代码> int AR2D(2)[6 ] < /代码>应该是足够的。通过循环,读取输入。我建议学习C++中的一个。可能的副本需要使用两个循环来输入和显示:<代码> for(int i(0);i<2;i++){for(int j(0);j<6;j++){CIN>AR22[i] [j];}简言之,我们可以说,无论是使用静态数组还是动态数组,我们都可以使用相同的下标符号(即arr2D[i][j])输入和显示数组值吗?我这样问是因为有些方法将分配的内存分配给指针变量,然后使用该指针执行数组操作。例如:int*p;p=new int[10];*p=25;p++;//p指向下一个数组组件*p=35;不!
p++
将增加指针本身。如果您这样使用它,您可以:
int*ptr=p;*p=25;p++;*p=10;p++;
现在您可以看到
ptr
跟踪第一个元素。因此您可以使用它来遍历分配的内存。
p=ptr;while(p)std::是否可以使用
索引
来输入和显示数组元素。请记住
数组
的索引从
0
作为第一个元素到
n-1
作为最后一个元素。任何超出此间隔的尝试都将导致
未定义行为
for(i = 0; i < 2; i++)
    delete[] arr2D[i];