指针与数组
指针
指针也是变量
![1d9f388353f093c67cf127a2f3724886.png](https://img-blog.csdnimg.cn/img_convert/1d9f388353f093c67cf127a2f3724886.png)
这里调用了*a_
并对其进行了操作
从而使a的值发生了变化
![2b9b8087c5eab38eaf7fd1d709ce3a59.png](https://img-blog.csdnimg.cn/img_convert/2b9b8087c5eab38eaf7fd1d709ce3a59.png)
指针需要初始化才安全
但是如果没有要指向的地址
就做上图的操作
指向NULL
![f3c516a4e0df1601b454d68f68698fac.png](https://img-blog.csdnimg.cn/img_convert/f3c516a4e0df1601b454d68f68698fac.png)
又回到函数中的a运算完毕后
这个a生命周期结束
无法被输出的问题
之前在C++的环境中
我们可以用引用型 f(int &a)
在指针这里
可以如右图中所示
函数直接操作指针
输入时只需要输入操作量的地址&a
数组
Part 01
数值型数组
比如 int a[10];
一次性定义十个整型
而且这10个数据在存储中连续排列
![f4f75a31bd2496d7ee6a0739844705c5.png](https://img-blog.csdnimg.cn/img_convert/f4f75a31bd2496d7ee6a0739844705c5.png)
其中*p=a的操作相当于把a数组的第一个地址给*p
我直接cout<
得到了一堆地址
而*(p+i)才顺利得到了指向的数据
上面a[10]由于写全了数据
可直接a[ ]表示
![ed8516c595b5d7350ae13da0d397b480.png](https://img-blog.csdnimg.cn/img_convert/ed8516c595b5d7350ae13da0d397b480.png)
对数组来说
数组名相当于第一个数据的地址
所以框中取*s2相当于把I换成S
这里要注意的是
数组s2[ ]内的各种数据可以修改
而*s1初始化的常量串是不可以修改的
事实上我都无法用指针初始化
Part 02
指针型数组
![1c9e991ad23b518313f42bfaa059258c.png](https://img-blog.csdnimg.cn/img_convert/1c9e991ad23b518313f42bfaa059258c.png)
![19d1c5f241302587746e6861e843e572.png](https://img-blog.csdnimg.cn/img_convert/19d1c5f241302587746e6861e843e572.png)
![79a96207846620fda25b3db1973c0830.png](https://img-blog.csdnimg.cn/img_convert/79a96207846620fda25b3db1973c0830.png)
函数中调用数组的本质是调用数组第一个数的地址
所以不必像之前一样进行引用
Part 03
二维数组
其中元素 是一维数组 的一维数组
![af58360600eb01da45c8217d3efd0950.png](https://img-blog.csdnimg.cn/img_convert/af58360600eb01da45c8217d3efd0950.png)
输出二维数组的例子
![a4bff24291ea164f28e0efce27908bb4.png](https://img-blog.csdnimg.cn/img_convert/a4bff24291ea164f28e0efce27908bb4.png)
如何将数组放入函数?请看上图
这里要注意
放入函数的时候
作为元素的数组长度是确定的
比如上图中是3
字符串组成的二维数组
每一个字符串的长度是可以不同的
![cf9dcf36351d165099ed0e92d3312865.png](https://img-blog.csdnimg.cn/img_convert/cf9dcf36351d165099ed0e92d3312865.png)
这个在我的电脑上无法初始化
指向函数的指针
![d57990063d9b4c546310262bf031976d.png](https://img-blog.csdnimg.cn/img_convert/d57990063d9b4c546310262bf031976d.png)
![884dc5d3397bea10347256ac171349be.png](https://img-blog.csdnimg.cn/img_convert/884dc5d3397bea10347256ac171349be.png)
注意格式
int(*p)(int,int);
然后通过判断语句令指针指向不同的函数
从而完成不同的运算