【问题标题】:Print values of dynamically allocated 2-D array using a pointer to the array Asked today使用指向数组的指针打印动态分配的二维数组的值 今天问
【发布时间】:2021-10-24 12:59:17
【问题描述】:

我正在尝试动态分配一个名为 array 的二维数组,然后将指针 ptr 指向该数组。现在,当我尝试使用指针打印数组值时,当我打印数组值时会得到垃圾值。 我是指针的新手,如果有人指出我在哪里思考错误,我将不胜感激。

代码sn-p:

int (*ptr[2])[8][512];
int** array;
array = (int**)malloc(8 * sizeof(int*));

for (int i = 0; i < 8; i++)
{
    array[i] = (int*)malloc(512 * sizeof(int));
}

ptr[0] = (int(*)[8][512])array;


for (int i = 0; i < 8; i++)
{
    for (int j = 0; j < 4; j++)
    {
        array[i][j] = i+j;
        
    }
    
}
for (int i = 0; i < 8; i++)
{
    for (int j = 0; j < 4; j++)
    {
        cout<<"Val"<<((*ptr[0])[i][j])<<endl;
        
    }
    
}

【问题讨论】:

  • 错误是什么?这对我来说在线运行的唯一问题是你没有使用 std 它应该是 std::cout 和 std::endl
  • 我在打印数组值时得到一些垃圾值: cout
  • 您能否发布您的预期输出与当前输出和错误消息
  • 观察到:Val-490549504 Val22038 Val-490547440 Val22038 Val0 Val0 Val0 Val0 Val0 Val0 Val0 Val0 Val0 Val0 Val0 Val0 Val0 Val0 Val0 Val0 Val0 Val0 Val0 Val0 Val0 Val0 Val0 Val0 Val0 Val0 Val0 Val0 Val0 预期:Val0 Val1 Val2 Val3 Val1 Val2 Val3 Val4 Val2 Val3 Val4 Val5 Val3 Val4 Val5 Val6 Val4 Val5 Val6 Val7 Val5 Val6 Val7 Val8 Val6 Val7 Val8 Val9 Val7 Val8 Val9 Val10
  • @william_,我相信我在这里做错了:ptr[0] = (int(*)[8][512])array;我想让 ptr[0] 指向名为 array 的二维数组,但它没有发生。

标签: c++ arrays pointers memory data-structures


【解决方案1】:

老实说,我无法理解您关于在堆栈上分配内存然后在堆上分配内存的想法

int **(ptr[2]);试试这个

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-04-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-05-26
    • 2014-11-10
    相关资源
    最近更新 更多