一、迭代器
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);
表示新开一段内存空间,并将原来空间中的内容拷贝过来,同时销毁原内存空间。