假设我声明了一个指向int的指针
int *a= new int();
int *b= new int();
我希望它将其地址存储在某个数组中,但该数组将不是这样的指针
int *arr[] = {a, b};
有可能吗?
因为数组名称包含地址,并且如果我们声明一个数组指针,那么它们将再次包含该地址,
那么我们如何将指针存储在规则数组中而不是指针中 数组。 喜欢
int arr[] = {a,b} ; //not like int arr[] = {*a, *b};
如果不是,为什么?
答案 0 :(得分:5)
()?
不声明指针,而是声明一个指针数组,其大小由 braced-init-list 确定。如果想要原始指针的原始数组,这就是您想要的语法。
也就是说,手动内存管理充满了复杂性,应该首选int *arr[] = {a, b};
,std::unique_ptr<int>[]
或std::array<std::unique_ptr<int>, some_compile_time_size>
,因为它们在超出范围时会设法释放内存。
答案 1 :(得分:0)
我很确定你在问什么? 我想你这么说!
1。指针数组和普通数组有什么区别。
2。为什么我们不能将指针分配给像这样的普通数组:
int *a= new int();
int *b= new int();
int SomeArray[] = {a,b} // and you trying to saying that why this is compiler error. while putting the a,b pointer into a normal array.
int *SomeArray[] = {a,b} // it is valid. because it is pointer array to in Int and contain pointers to in Int variables.
所以我想这是你想问的。
结论: 如果声明特定类型的普通或常规数组,则必须具有适当的值。 如果数组是Pointer数组,则必须在其中放置指针。
例如:
//For pointer array.
int *a= new int(); // this is pointer to an Int a.
int *b= new int(); // this is pointer to an Int b.
int *pointerArray[]={a,b};
//For regular array.
int x= 10; // this is normal int.
int y= 20; // this is normal int.
int normalArray[]={x,y};
我希望你想问什么。你说对了吗?