1、数组名的理解
当我们运行如上代码可以知道,数组名就是首元素的地址,但是有两个例外:
1 sizeof(arr)这里面的arr代表整个数值,计算的也是整个数组的长度。
2 &arr,这里的取地址取的是整个数组的地址。
这⾥我们发现&arr[0]和&arr[0]+1相差4个字节,arr和arr+1 相差4个字节,是因为&arr[0] 和 arr 都是 ⾸元素的地址,+1就是跳过⼀个元素。 但是&arr 和 &arr+1相差40个字节,这就是因为&arr是数组的地址,+1 操作是跳过整个数组的。 到这⾥⼤家应该搞清楚数组名的意义了吧。 数组名是数组⾸元素的地址,但是有2个例外。
2、使用指针访问数组
如上所述,访问数组可以用指针的形式进行,当有一个数组arr,且指针指向arr时就有
arr[i]=*(p+i)
3、一维数组传参的本质
一维数组传参的本质就是传递指针,也就是将数组中首元素的地址传过去。
因此,在形参中可以用指针进行接收。
4、冒泡排序法
冒泡排序法核心思想就是将两个相邻的元素进行比较。
5、二级指针
二级指针也是指针,他是用于存放一级指针地址的。
如图所示,将二级指针解引用*ppa=pa,**ppa=*pa=a=10。
6、指针数组
可能大家会有疑惑,指针数组到底是指针还是数组,
我们举个例子:整形数组,字符数组,浮点形数组,他们都是数组,因此,指针数组是数组。
举例:int *p[10];这就是一个指针数组
指针数组:用于储存指针的数组。
7、用指针数组模拟二维数组
如图,我们将一个指针数组,指向三个不同的数组,作为行,然后,将每一个数组作一行。这样就模拟出了二维数组。