双指针:主要用来遍历数组 若两指针指向相同数组且遍历方向相同且不相交,即为滑动窗口,若遍历方向相反则将数组覆盖,可用来进行搜索
指针与常量:
int x
int *p1=&x; *p1为一个类型是int的指针,获取变量x的地址。指针可以被修改,值也可以被修改
const int *p2=&x; const作用在int上而非指针p2上,因此指针可被修改而值不可修改
int * const p3=&x; const作用在p3上则指针不可改变而值可被修改
const int * const p4=&x; 指针和值都不可被修改
指针函数与常量:
addition 是指针函数,即代码最终不是return 0,而是返回一个指针
int* addition(int a, int b) {
int* sum = new int(a + b);//分配内存
return sum; //函数最终返回的是指针sum
}
minus是函数指针,指向函数的指针
合并两个数组:
void merge(vector<int>& nums1, int m, vector<int>& nums2, int n) {
int pos = m-- + n-- - 1;
while (m >= 0 && n >= 0) {
nums1[pos--] = nums1[m] > nums2[n]? nums1[m--]: nums2