一、数组名的理解
二、使用指针访问数组
三、一维数组传参的本质
四、二级指针
五、指针数组
六、指针数组模拟二维数组
一、数组名的理解
在上一章中我们使用指针访问数组内容时,有这样的代码:
sizeof(数组名),sizeof中单独放数组名,这⾥的数组名表示整个数组,计算的是整个数组的⼤⼩,
单位是字节
&数组名,这⾥的数组名表⽰示整个数组,取出的是整个数组的地址(整个数组的地址和数组⾸元素的地址是有区别的)
二、使用指针访问数组
以下是通过指针向数组中输入数据和打印数组:
三、一维指针传参的本质
所以看似人模狗样给个数组接收其实本质是int*arr,为方便人们理解写成int arr[ ]
所以“[ ]”中给不给个数无所谓,其本身不会创建一个真的数组,本质是指针变量
形参和实参名字重复不影响
总结:⼀维数组传参,形参的部分可以写成数组的形式,也可以写成指针的形式。
四、二级指针
int** ppa = &pa的意思 ; *ppa表示其是个指针,int*表示其指向的内容是int*类型
五、指针数组
指针数组是指针还是数组?
我们类⽐⼀下,整型数组,是存放整型的数组,字符数组是存放字符的数组。
那指针数组呢?是存放指针的数组。
理解为:arr先与[ ]结合是个数组,数组的每个元素是int*类型
六、指针数组模拟二维数组
什么是二维数组?
可理解为:把⼀维数组做为数组的元素,这时候就是⼆维数组
模拟代码:
补充:在C语言中,两个指针变量的值相同时,内存中不会开辟两块相同的空间,而是两个指针变量同时指向同一块内存空间
未完待续.....