[c/c++]指针数组 pk 数组指针
原创
©著作权归作者所有:来自51CTO博客作者mb6300b232419d1的原创作品,请联系作者获取转载授权,否则将追究法律责任
首先强调 指针数组归根结底是个数组;数组指针归根结底是个指针。
数组指针
以int (*int)[10]为例
()的优先级大于[],因此首先它是一个指针,它指向一个数组,数组的维数是10。因此数组指针也称为“行指针”,它的跨度是一行一行的。例如
#include <iostream>
using namespace std;
int main()
{
int v[2][3] = {{1, 2, 3}, {4, 5, 6}};
int (*a)[3] =//指向第0行的指针<< **a << endl;
cout << **(a+1) <<//a+1 变成指向第1行的指针
输出
它的主要用途是用在二维数组的传递,例如
#include <iostream>
using namespace std;
void test(int (*v)[3])
{
cout << v[1][1] << endl;
}
int main()
{
int v[2][3] = {{1, 2, 3}, {4, 5, 6}};
test(v);
}
结果输出5, 更多向函数中传递二维数组参考。
指针数组
它是一个数组,;里面存放的东西是指针。
行如 int* pv[3],[]的优先级大于*,因此它是一个维数为3的数组,里边存放这指向int的指针。例如
#include <iostream>
using namespace std;
int main()
{
int v[2][3] = {{1, 2, 3}, {4, 5, 6}};
int* pv[2];
for (int i = 0; i < 2; ++i)
pv[i] = v[i];
}