指针:
1.指针变量初始化:如果指针变量没有初始化,此时是随机值。也就是野指针。初始化可以让指针变量有明确指向。
int *p = NULL //NULL 0号地址。也叫空指针。
2.定义多个指针类型变量:int *P,*q; //定义时候的 * 是修饰变量名的,表示定义的是一个指针类型的变量。
3.为什么需要指针? 可以实现被调修改主调(指针的主要的用途)。
1.指针作为函数参数。
形参 ---指针类型变量,用来接收实参。(实参是要修改内存空间的地址)
实参 ----要修改谁,就把谁的地址传过去。要保证空间有效。
注意:被调函数中,一定要有 *P运算。
!!!值传递:只是实参数据赋值给了形参。
地址(指针)传递 :传的是地址 ---可以实现被调修改主调
指针+一维数组:
1定义一个什么类型的指针变量?int *p= a;int *p = &a[0];
2.谁能代表数组所在空间的首地址。a//&a[0]
3.数组名是一个常量,不能做自增自减。
指针的运算:&;*;p++;p--;指针比较<;<=,>;>=;
p+n:表示跳过了n个基类型,
*&p == p
*(p+i) <=>a[i] <=>*(a+i)
p-q: //表示差了多少个元素个数,也就是差了多少个基类型。(必须是同一类型的指针才能进行减法)
不能进行p+q;p*q;p/q.
数组作为函数的参数:
形参 ---数组形式 // 本质上是一个指针型变量。
int *a
实参 ---数组名 //
快速排序:
思想:分而治之。
过程:1.找begin开始位置上的值作为一个基准值
2.从最后的end开始向前找,直到找到一个比基准值小的数
3.从开始的begin开始向后找,直到找到一个比基准值大的数
4.交换此时begin和end 位置上的值。
5.重复2~4直到begin=end;交换此时begin和end相等位置上的值和基准值。
6.再从基准值左边开始重复1~5.再从基准值右边开始重复1~5.直到确定每一个位置上的值。