指针——数组与指针

一、迭代器

1、借助指针变量begin、end进行数组遍历。可自定义遍历开始元素。

2、迭代与递归实现逆序

3、快速排序

步骤:(1)定一个基准数;(2)从左到右,找比基准数小的数;(3)从右到左,找比基准数大的数;(4)交换找到的两数;(5)将基准数与两数碰到后的值进行交换;(6)一轮结束之后,两数共在的左边都比基准数小,右边都比基准数大;(7)递归(分为若干更小的数组进入循环)。

4、指针间不能求和,只能求差,且两求差数基类型要一致。

二、字符数组与指针

1、const int *p;指针前可加const修饰,表示无法通过该指针修改指针变量所指向的变量。

不同于 int *const p;表示指针变量不能被修改。

2、字符串被称为匿名数组。指针变量所指向的为字符串常量时,不加const时,也不能被修改。因为字符串常量在字符串常量区,本身就只能读不能写。

3、万能指针void *p,可以接收任何类型的指针,降低程序耦合性。

        万能指针不能进行运算。

4、指针函数不能返回局部变量地址,因为其为动态生存期

解决方法:加static静态生存期修饰;或用全局变量;或返回函数结束后依旧存在的、不被销毁的变量。

例如:strcpy原型,返回值为char *型。

三、动态内存分配

函数malloc,其内存空间在堆区,需要手动销毁。

申请:void *malloc(size_t size);

             size_t size表示需要申请的内存空间大小;该内存空间一定是连续的。

             若申请成功:函数返回内存空间的首字节地址。

             若申请失败:函数返回空指针。

销毁:void free(void *ptr);

内存扩容、缩容:void *realloc(void *ptr,size_t size);

                表示新开一段内存空间,并将原来空间中的内容拷贝过来,同时销毁原内存空间。

  • 9
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值