为动态分配的指针数组的所有元素赋值?
Assigning values to all the elements of a dynamically allocated pointer array?
我有一个包含两个元素的指针数组 (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;
}
整数数组和指向 int
的指针数组之间存在差异。在您的情况下, ptrArr1
是指向整数数组的指针, space 表示两个整数。因此,您只能将 int
分配给 ptrArr1[1] = 2
而不是地址。比较
int xs[] = { 1, 2, 3 }; // an array of integers
int y0 = 42;
int *ys[] = { &y0, &y0 }; // an array of pointers to integers
现在您还可以拥有指向 xs
的第一个元素的指针。 ys
:
int *ptr_xs = &xs[0];
int **ptr_ys = &ys[0];
// which can be simplified to:
int *ptr_xs = xs;
int **ptr_ys = ys;
对于简化步骤,您应该查看 What is array decaying?
您有一个 int 数组,而不是指针数组。您可以使用
创建一个指针数组
int **ptrArr1 = new int*[2];
然后将指针分配给数组中的每个指针:
ptrArr1[0] = &one;
ptrArr1[1] = &two;
我有一个包含两个元素的指针数组 (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;
}
整数数组和指向 int
的指针数组之间存在差异。在您的情况下, ptrArr1
是指向整数数组的指针, space 表示两个整数。因此,您只能将 int
分配给 ptrArr1[1] = 2
而不是地址。比较
int xs[] = { 1, 2, 3 }; // an array of integers
int y0 = 42;
int *ys[] = { &y0, &y0 }; // an array of pointers to integers
现在您还可以拥有指向 xs
的第一个元素的指针。 ys
:
int *ptr_xs = &xs[0];
int **ptr_ys = &ys[0];
// which can be simplified to:
int *ptr_xs = xs;
int **ptr_ys = ys;
对于简化步骤,您应该查看 What is array decaying?
您有一个 int 数组,而不是指针数组。您可以使用
创建一个指针数组int **ptrArr1 = new int*[2];
然后将指针分配给数组中的每个指针:
ptrArr1[0] = &one;
ptrArr1[1] = &two;