【发布时间】:2019-04-22 15:08:52
【问题描述】:
我有一个包含两个元素的指针数组 (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;
}
【问题讨论】:
-
当您执行
ptrArr1 = &one时,它类似于执行one = two并期望one的值仍然是1。 -
此外,
ptrArr[x]是int而不是int*(例如&one是)。 -
ptrArr[1] = &two;尝试将地址 (int*) 分配给int-> 类型不匹配。ptrArr1 + 1 = &two;不是类型不匹配,而是尝试将地址分配给非左值。强烈简化,这和1 = 0;一样错误。 -
还有
int *ptrArr1 = new int[2];和ptrArr1 = &one;之后覆盖ptrArr1。这有点像写foo = 2; foo = 42;。
标签: c++ arrays pointers dynamic-memory-allocation