我不明白做什么" double * array [50]"意思?

时间:2018-01-03 00:29:54

标签: c++

这是否意味着有一个50的数组,并且50中的每一个都是指向double的指针?如果是这样那么这意味着array [i]将只包含指向堆中另一个地方的地址吗?

2 个答案:

答案 0 :(得分:2)

  

[double *array[50]]是否意味着有一个50

的数组

  

并且50中的每一个都是指向double的指针?

  

如果是,那么这是否意味着array [i]只包含指向堆中另一个地方的地址?

没有。没有这样的意思。每个指针都可以指向内存任何部分的任何对象,而不仅仅是“堆”。事实上,C ++语言与堆的概念无关。

请注意,声明的上下文可以更改其含义。如果这是函数参数的声明,那么答案就会不同。

答案 1 :(得分:1)

它表示一个包含50 double *的数组,它是指向双精度的指针。在初始化double *array[50]中,您没有将指针分配给任何东西,因此它们指向任何东西。就像你这样做:

double *p; // P doesn't point to anything, using it will cause you issues.
double a; // a is a automatic storage duration instantiation of a double.
p = &a; // now p points to a.

因此,对于数组中的每个指针,您需要先将它们分配给某些内存,然后才能使用它们。