本来不想了解数组指针的,但有道题需要用到数组指针,百度了很久,还是不知道数组指针有什么用。
数组指针(指向数组的指针)可以实现对二维数组的引用:
int data[9][9] = {0, 0, 0};
int (*p)[9] = data;
p[0][0] = 1;
cout << "The ptr value: " << p[0][0] << p[0][1] << p[0][2] << endl;
//输出结果为The ptr value: 100
用处1: 此可应用于两个互没有继承与派生关系的类A与类B,将设想在A中使用类B中的一个二维数组,此时使用一个上述类型的数组指针就再好不过了。免除了因赋值而造成的耗时问题
用处2: 适用于向函数传递一个二维数组。
要知道一般情况下调用函数时,并不是直接传递参数本身,而是复制一份参数的拷贝给函数使用。
数据小倒是没什么,参数要是a[10000]呢?你也要复制a[10000]的10000个元素拷贝?再就是函数不支持数组作为参数。
然后数组初始化后无法直接赋值的,修改了a[10000]的拷贝后又要逐一拷贝给原来的a[10000],这样就很麻烦。
而用数组指针就很方便,只要传递数组首地址就可以用指针偏移修改原数组参数的值。