CB *_*ley 11
问这个的更好方法是问为什么C++不需要指定第一个维度.
原因是对于所有数组,您不能通过值将数组传递给函数.如果您尝试声明一个采用数组的函数,编译器会将声明调整为相应的指针类型.
这意味着您指定的维度无关紧要,因为维度不构成函数签名的一部分.
例如,这些都声明了完全相同的功能.
void f(int *p);
void f(int p[]);
void f(int p[10]);
void f(int p[100]);
Run Code Online (Sandbox Code Playgroud)
当导航p函数中指向的数组时,copmiler需要的唯一信息是数组元素的大小,即sizeof(int)在这种情况下.
对于更复杂的阵列,完全相同.这些都是一样的:
void g(Type p[][10][20]);
void g(Type (*p)[10][20]);
void g(Type p[10][10][20]);
void g(Type p[99][10][20]);
Run Code Online (Sandbox Code Playgroud)
但这些都不同于:
void g(Type p[][5][20]);
Run Code Online (Sandbox Code Playgroud)
因为调整外部数组维度以外的任何内容的维度会影响(至少)外部数组元素的大小,这意味着导航数组的指针算法必须更改.
| 归档时间: |
|
| 查看次数: |
626 次 |
| 最近记录: |