目录:
1.数组名的理解
2.使用指针访问数组
3.一维数组传参的本质
4.冒泡排序
5.二级指针
6.指针数组
7.指针数组模拟二维数组
1.数组名的理解
我们前面写到过数组名就是首元素地址,那就是是不是呢?我么来验证一下
挖去,还真是!
所以基本可以说:数组名就是首元素的地址。&fxk[0]=fxk
但是有两个例外:
1.sizeof(数组名)
这里的数组名表示整个数组,计算的是整个数组的大小
2.&数组名
这里的数组名也表示整个数组,取出的是整个数组的地址。
再来看下面代码:
小笨是不是又蒙了,按前面的说法应该是前两个相同,第三个不同啊,为什么都相同?
通过上面代码我们就能发现原因了,前两个加1都是差了四个字节(一个int)而最后一个则差了40个字节(整个数组)。
所以看上去表面相同,实际上不同。
2.使用指针访问数组
为什么可以使用指针访问数组:
1.数组在内存中是连续存放的
2.指针的运算很方便的遍历数组,取出数组的内容
注意:
1.数组就是数组,是一块连续的空间,是可以存放一个或者多个数组的。
2.指针变量是一个变量,是可以存放地址的变量。
这俩不是一回事,但是可以通过指针访问数组。
3.一维数组传参的本质
数组传参的本质:传递的是数组首元素的地址。所以形参即使写成数组的形式,本质上也是一个指针变量。
如下图:
4.冒泡排序
核心思想:相邻一对作比较,符合条件就下一对,不符合条件就交换。
条件:升序/降序
5.二级指针
5.1什么是二级指针?
二级指针说白了就是一级指针变量的指针
int main()
{
int a=10;//&a就是一级指针
int*p=&a;//&p就是二级指针
int**ppa=&p;//p是一级指针变量
return 0;//ppa是二级指针变量。
*(*ppa)=*(p)=a=10
//ppa存放的是p的地址
//p存放的是a的地址
}
二级指针变量存放一级指针变量的地址。
注意二级指针变量有俩**。
6.指针数组
概念:元素类型为指针(地址)的数组。
例如:int* fxk[6];
fxk是存放整型指针的数组。
打印指针数组:
7.指针数组模拟二维数组