int *a[10]; 定义了一个指针数组,即10个int * 类型的指针。
int (*a)[10]; 定义了一个指向行的指针变量,注意是”一个”指针变量,而上面的指针数组是”10个”指针变量。指向行的指针变量可以用来指向二位数组int x[N][10],
a指向x即:
a <==> x 或者 x[0] 或者 &x[0][0]
a+1 <==> x[1] 或者 &x[1][0]
a+2 <==> x[2] 或者 &x[2][0]...
另外:*(a+i)+j <==> x[i][j]
int (*)a[10]没有这种用法

数组的引用作为函数形参:
当参数是数组的名字时,函数接收数组的首地址,维数丢失
当参数是数组的引用时,函数接收数组的首地址和维数
int sz[10];
void function(int *p, int size);//传名字的一般的写法
void function(int (&arr)[10]);//传引用的一般的写法
- #include <iostream>
- using namespace std;
-
- void fun(char (&buff)[11])//括号里必须有11才不报错
- {
- cout<< buff;
- }
-
- int main(int argc, char *argv[])
- {
- char buff[] = "helloworld";
- fun(buff);
- return 0;
- }
- c++的数组类型是带有长度信息的,引用传递时如果指明是数组则必须指定长度
本文详细解析了 C++ 中 int*a[10] 和 int(*a)[10] 的区别,前者定义了一个包含 10 个整型指针的数组,后者定义了一个指向整型数组的指针。同时介绍了如何使用数组引用作为函数形参,并展示了通过引用传递数组时如何保持其长度信息。

被折叠的 条评论
为什么被折叠?



