C/C++数组指针

数组指针 就是指向数组的指针!

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这样的保存更直观,更好理解,更发阅读与维护!

就写这么多,长了不好理解,下一篇写一下指针数组是啥!

猜你喜欢

转载自blog.csdn.net/kaizi318/article/details/109005236