C语言——指针与一维数组

一、 整型数组指针运算

1、指针可以进行加法运算,如:p + n

其结果依旧是一个指针,新的指针是在原来的地址基础上加n * (sizeof(基类型))个字节。

指针和指针不能求和运算,但可以求差。两指针相见必须保持类型一致,其差的结果为相差基类型的个数。

例题:

①下列打印的值分别为:

(* 和 ++都是单目运算符,结合方向自右向左)

p 代表数组首元素的地址,即*p表示数组首元素的值,所以为1;

p++表达式没加,所以*p++也是首元素的值为1;

++p表达式加了,p的值也加了1,所以*++p的值为3;

*(a + 1)表示第一个元素的值,*(a + 1)等价于a[1] ,值为2;

int *p;
*p = NULL; // 不能间接访问

③数组求和

④数组的逆序(调用swap函数可以交换主调函数两数的值)

⑤数组利用指针的选择排序


 

⑥利用指针进行数组的二分法查找


 

上述均为函数,需用主函数对其进行调用。

二、迭代器

①数组的遍历

②数组逆序

③数组的选择排序

④数组的冒泡排序

⑤数组的二分法查找

三。函数的递归调用与指针

① 数组函数递归二分法:

 ②利用指针遍历数组

③数组的逆序

④快速排序

其目标是将数组分为两部分,左边部分小于基准数t,右边部分大于基准数t。(大都选择数组第一个元素为基准数t)

步骤:

(定义指针p,q ; *p = begin;*q = end)

Ⅰ、选择数组第一个元素为基准数;(t * begin)

Ⅱ、自右向左寻找 “小于” 基准数的数;

Ⅲ、自左往右寻找 “大于” 基准数的数;

Ⅳ、交换两数;

Ⅴ、当p q 位置重合,交换该数和基准数t;

Ⅵ、对基准数组数两侧的“子数组”分别重复上述步骤,即函数递归。

代码如下:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值