学习嵌入式的第十三天---指针

指针变量初始化:

如果指针变量没有初始化,此时是随机值------野指针

初始化可以让指针变量  有明确指向

初始化:

int  a=10;

int *p=&a;

int * p=NULL  (NULL是0号地址)-----空指针

赋值:

int * p;

p=NULL;

int a;

int * p;

p=&a;

int *p ,q;-----p是指针类型  q是int型

int *p,*q------此时表示定义了两个 int*类型的变量 p和q

注意:定义时候的  * 修饰变量名的  表示定义的是一个指针类型的变量

为什么需要指针?

被调修改主调

要实现被调修改主调:

1.指针作为函数参数

形参---指针类型变量  ,用来接受实参(实参是要操作的内存空间的地址)

实参---要修改谁,就把谁的地址传过去

       -----要保证  空间有效

注意:被调函数中  一定要有 *p 运算(间接访问的操作)

值传递   只是实参数据  赋值了形参

地址(指针)传递     传的是地址---可以实现被调修改主调

---------------------------------------------------------------------------------------------------------------------------------

指针+ 一维整型数组

int a [ 5 ]; 一维整形数组  

数组名  

          ----类型----数据类型 int [ 5 ]

          -----值  ----- 数组首元素的地址---常量

数组名是个常量 不能做自增自减

1.定义一个什么类型的指针变量?

int *p=a;

int * p= &a[0];

2.谁能代表数组所在空间的首地址?

数组名---数组首元素的地址

这个地址值的类型

a<=>&a[ 0 ]   

                 -----a[ 0 ]的数据类型---int 型

                 ------&a[ 0 ] 地址的类型--- int *

int * p=a ;  表示p指向了数组a;

* p <=>a[0]

指针的运算:

&

*

p+1----  加n 表示跳过了  n个基类型

p-1

p++

p--

指针比较 >   >=   <   <=   ==   !=

p - q  -----表示差了多少个元素(基类型)

         -----必须是同一类型的指针

p+q   ----不行

int *p;

p的类型 int *

 &p 获得地址

  * (p+i)<=> a[ i ]  <=>  *(a+i)

数组作为函数参数 :

形参---数组形式  ---本质上是一个指针类型变量

                               int *a

           数组长度   int len

实参----数组名

            数组名代表数组首地址

            数组长度

迭代-----描述过程

快速排序:

思想:

分而治之

实现思路:

1.基准值---数组元素a[0];----基准值位置

2.end从右边开始,找到第一个比基准值小的数

3.begin从左边开始,找到第一个比基准值大的数

4.将找到这个数交换 ,继续重复2—4的过程,直到begin/end 相遇此时结束

5.将基准位置上的值  与此时 begin/end 所处位置的元素交换

6.继续对做一半和右一半进行快速排序

练习:四种排序 指针的方法  数组的最大值 逆序 交换位置

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值