数组
所有的数组都是由连续的内存位置组成。最低的地址对应第一个元素,最高的地址对应最后一个元素。
数组特点:
静态分配空间(int a [100]:400个字节) int a [?] --> 空间利用率差(1、不够用;2、浪费空间)
所占内存空间特点:连续的(物理连接)--> malloc分配空间是否物理连接?(malloc实验原理:链表连接所有空闲的空间,组成最终分配的空间)
一维数组:
a:数组名,指针常量,保存数组首元素的地址
&a:对数组名取地址,等于数组的地址
*(&a)= a:对一维数组的地址取值等于数组首元素的地址;整型变量的得知用整形指针变量,字符变量的地址用字符指针变量,数组的地址用数组指针变量保存
数组指针变量:变量,保存的是地址,该地址是数组的地址
二维数组:
二维数组的定义:不能省略行,可以省略列
aa:指针常量,保存的是首个一维数组的地址
&aa:二维数组的地址
*(&aa)= aa:对二维数组的地址取值等于首个一维数组的地址
*aa:首个一维数组的收个元素的地址
*(*(aa + i)+ j)
aa:二维数组中首个一维数组的地址
aa + i:二维数组中第i + 1个一维数组的地址
*(aa + i):二维数组中第i + 1个一维数组的首元素的地址
*(aa + i)+j:二维数组中第i + 1个一维数组的第j + 1个元素的地址
*(*(aa + i)+ j):二维数组中第i + 1个一维数组的第j + 1个元素的地址的值
指针的指针指向指针的指针
给形参分配
数组做形参只会提供首地址
指针的指针指向指针的指针
给形参分配
数组做形参只会提供首地址