* array []和array []有什么区别?

时间:2018-12-14 16:45:50

标签: c++ arrays

  • 我们知道数组名称的值是数组中第一个元素的地址
  • ,指针的值是一个地址。

假设我声明了一个指向int的指针

int *a= new int(); 
int *b= new int();

我希望它将其地址存储在某个数组中,但该数组将不是这样的指针

int *arr[] = {a, b};

有可能吗?

因为数组名称包含地址,并且如果我们声明一个数组指针,那么它们将再次包含该地址,

  • 那么我们如何将指针存储在规则数组中而不是指针中 数组。 喜欢

    int arr[] = {a,b} ; //not like int arr[] = {*a, *b};
    

如果不是,为什么?

2 个答案:

答案 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};

我希望你想问什么。你说对了吗?