这些类型的指针有什么区别?

Lov*_*ess 8 c++ arrays pointers

当我不小心将括号括在我的指针上并且我的程序输出发生了变化时,我用C++编写了一个代码.

由于我是编程新手,我想知道这些类型的指针之间的区别:

int* A[n]; 
int (*A)[n];
int *(A[n]);
Run Code Online (Sandbox Code Playgroud)

我在教科书中读过,数组也是一种指针.

小智 15

int* A[n];
Run Code Online (Sandbox Code Playgroud)

无论元素是什么类型,第一个也是最重要的是数组.在应用指针*之后,我们知道A是一个int指针数组.

int (*A)[n];
Run Code Online (Sandbox Code Playgroud)

通过应用括号,在这种情况下,指针*优先于array [].然后A首先是一个指针,无论它指向什么.在应用array []之后,我们知道A是一个指向int数组的指针.

int *(A[n]);
Run Code Online (Sandbox Code Playgroud)

括号不会更改任何会影响数组[]的优先顺序,因此删除括号int* A[n]与第一种情况相同.

Are array pointers?
Run Code Online (Sandbox Code Playgroud)

否.Array是一种数据结构,它分配内存池并按顺序存储数据,其中指针指向内存池中的特定索引,并引用存储在该内存位置的数据.

  • @Shark不,数组可以*衰减*到第一个元素的指针,但数组本身不是指针. (14认同)
  • @Shark`sizeof`会有所不同. (4认同)
  • 你是对的,数组不是指针.但是,在C(或C++)中,定义数组时,为数组赋值的值是数组中第一个元素的内存地址(指针). (3认同)