如何理解复杂的数组声明指针,和

Dav*_*ang 1 c++ arrays pointers

这是两行代码:

int (*parry)[10]   = &arr   // Line # 1
int *(&arrRef)[10] = ptrs   // Line # 2
Run Code Online (Sandbox Code Playgroud)

第1行:

parry是一个指向int大小为10 的数组的指针.
它是否意味着:

  • parray[1]指向的地址arr,
  • parray[2] 要点的 arr
  • ...
  • parray[10]要点或arr

Line # 1什么时候用?

解:

#include <iostream>
int main(
{
 int arr[10] = { 3, 54  };
 int (*parry)[10] = &arr;
 std::cout << (*parry)[0] << " " << (*parry)[1] << " "  << (*parry)[3] << "  " << parry[4] << std::endl;
 return 0;
}
Run Code Online (Sandbox Code Playgroud)

输出:

3,54,0,索引为4的arr的十六进制地址.

看起来里面parry[0]是一个指向arr与索引关联的指针.所以,parry[0]---> arr[0].

第2行:

arrRef是对int十个指针大小的数组的引用.arrRef被提及ptrs.
这是否意味着:

  • arry[1]是一个int指针?...
  • arry[10]是一个int指针?

这可以用什么例子?

R S*_*ahu 7

如有疑问,请参阅顺时针/螺旋规则.

int (*parry)[10] = &arr;
Run Code Online (Sandbox Code Playgroud)

parry是一个指向10 int秒数组的指针.

int *(&arrRef)[10] = ptrs;
Run Code Online (Sandbox Code Playgroud)

arrRef 是指向int的10个指针数组的引用.

例:

int main()
{
   int arr[10];
   int* ptrs[10];

   int (*parry)[10] = &arr;
   int *(&arrRef)[10] = ptrs;
}
Run Code Online (Sandbox Code Playgroud)

  • 该网页应该是指针上任何C或C++教科书章节的一部分:) (2认同)