为什么int*arr也可以看作一个数组?
我的理解
最关键在于数组在内存中是连续存放的而我们只需要知道数组中的第一个元素的地址我们就可以得到数组的全部元素。具体操作为:
int*p=arr[0] //把数组首元素的地址给p
然后*(p+1)
这就是我们跳过首元素得到第二个元素的地址,而*就是解引用,就是访问当前地址所指向的内存空间。
因此int*arr与int arr[]就可以建立起联系
也就是*(arr+i)=arr[i],从这也可以看出[]也是一个解引用操作符,即对数组中第i个元素的地址所指向的内存空间进行访问
malloc如果申请成功就返回一个指向被分配的内存块起始位置的指针
这时我们如果用一个指针变量int*p来接受此时p就是一个数组通过指针运算便可以得到数组中的元素并加以改进
11-24
865
![](https://csdnimg.cn/release/blogv2/dist/pc/img/readCountWhite.png)
06-08
1492
![](https://csdnimg.cn/release/blogv2/dist/pc/img/readCountWhite.png)
12-28
584
![](https://csdnimg.cn/release/blogv2/dist/pc/img/readCountWhite.png)