数组指针 就是指向数组的指针!
1. excample:
int arr[10] = { 1,2,3 };
//那要用一个指针怎么来表示呢?
int (*parr) [10] = NULL;
//指向数据的首地址
parr= &arr;
这样parr表示是一个数组指针,指向一个一维整型数组!
2.
int arr[3][4]={
{1,2,3,4},{11,12,13,14},{21,22,23,24}};
int (*parr)[4];
parr=&arr;
这里parr表示是一个数组指针,指向一个二维整型数组!
为什么即可以指向一维数组,以可以指向二维数组呢, 因为指针这个东西啊,就是表示的功能太多,
你可以理解它是一个指针,指向一个地址,地址里存什么都 可以,地址里再存数组!
所以指针本向就是一个数组!(你可以 这么理解)
3.excample:
void func(int a[])
{
}
void func(int* a)
{
}
在c++里这两个函数完全等效! 数组参数,本身就是一个指针!
但是上面parr指针的 ++ 这样的操作偏移就不一样了,这一点很重要,它的parr++实际是sizeof(给定的数据类型)
数组指针自增(*p++)时,指针指向移动sizeof(类型)。
偏移了这么多! 这对初学者是很大考验,所以啊,你能不能就最好不用!
最后说明一下: c++中 数组指针基本没什么用处了,早期代码会用,从c++11开始基本不用了,了解一下就可以了,有这么
个东西,但是c语言还是用得地方比较多,c++直接用标准库vetcor这样的保存更直观,更好理解,更发阅读与维护!
就写这么多,长了不好理解,下一篇写一下指针数组是啥!