首页 > 解决方案 > 为动态分配的指针数组的所有元素赋值?

问题描述

我有一个ptrArr1包含两个元素的指针数组 ( )。我希望动态分配指针数组。我可以很好地为指针数组的第一个元素分配地址,但我不知道如何为指针数组的第二个元素分配地址。我不希望使用任何 STL 或其他预编码函数。我正在做这个练习来增强我对指针的理解。谢谢你。

int main()
{
    int one = 1;
    int two = 2;
    int *ptrArr1 = new int[2];
    ptrArr1 = &one;
    ptrArr1[1] = &two;  //does not work
    ptrArr1 + 1 = &two; // does not work


    delete[]ptrArr1;
    return 0;

}

标签: c++arrayspointersdynamic-memory-allocation

解决方案


整数数组和指向 的指针数组是有区别的int。在您的情况下ptrArr1,是一个指向整数数组的指针,其中包含两个整数的空间。因此,您只能分配intptrArr1[1] = 2但不能分配地址。相比

int xs[] = { 1, 2, 3 };    // an array of integers

int y0 = 42;
int *ys[] = { &y0, &y0 };  // an array of pointers to integers

现在你也可以有指向xsresp 的第一个元素的指针。ys

int *ptr_xs = &xs[0];
int **ptr_ys = &ys[0];

// which can be simplified to:
int *ptr_xs = xs;
int **ptr_ys = ys;

对于简化步骤,您应该研究什么是数组衰减?


推荐阅读