首页 > 其他分享 >玩转双指针

玩转双指针

时间:2022-12-04 12:00:10浏览次数:35  
标签:const 常量 指向 int 玩转 数组 指针

一、算法简介

双指针主要用于遍历数组,两个指针指向不同的元素,从而协同完成任务。也可以延伸到多
个数组的多个指针。

若两个指针指向同一数组,遍历方向相同且不会相交,则也称为滑动窗口(两个指针包围的
区域即为当前的窗口),经常用于区间搜索

若两个指针指向同一数组,但是遍历方向相反,则可以用来进行搜索,待搜索的数组往往是
排好序的。

二、指针小知识

对于C++ 语言,指针还可以玩出很多新的花样。一些常见的关于指针的操作如下

(1)指针与常量

 

 

i. const int * p2, 为常量指针,即指向一个常量(const int)的指针。

ii. int * const p3,为常量指针,指针本身是常量,指向的地址不可以变化,但是指向的地址所对应的内容(值)可以变化。

(2)指针函数与函数指针

#include <iostream>

// addition是指针函数,一个返回类型是指针的函数
int* addition(int a, int b) {
int* sum = new int(a + b);
return sum;
}

int subtraction(int a, int b) {
return a - b;
}

int operation(int x, int y, int (*func)(int, int)) {
return (*func)(x,y);
}

// minus是函数指针,指向函数的指针
int (*minus)(int, int) = subtraction;


int main()
{
    int* m = addition(1, 2);  // 1 + 2 = 3
    int n = operation(3, *m, minus);  // 3 -3 = 0
    std::cout << *m << std::endl;
    std::cout << n << std::endl;
    return 0;
}

 输出结果为:

 

标签:const,常量,指向,int,玩转,数组,指针
From: https://www.cnblogs.com/spacerunnerZ/p/16949600.html

相关文章

  • C 字符串指针与字符串数组
    在程序中定义的字符串无论是对于字符串指针还是字符串数组,都会将字符串放到静态存储区在程序开始运行的时候,对于数组来说,先分配内存空间,然后静态存储区中的字符串字面量......
  • go指针逃逸对结构体元素集合法(增法)
    packagemainimport("awesomeProject/logger""fmt""github.com/opencontainers/runtime-tools/filepath""os")typeGoodsstruct{IDuintMonTsstr......
  • 数据结构 玩转数据结构 6-13 更多二分搜索树相关话题
    0课程地址https://coding.imooc.com/lesson/207.html#mid=13478 1重点关注1.1待解决的问题(持续深进)求某个节点的floor和ceil求某个节点的......
  • char数组转int后的指针显示值
    #include"iostream"usingnamespacestd;intmain(void){charstr[]="1234567890";int*p=(int*)str;printf("%x\n",*(p+1));//0x38373635cout<<*(p+1)......
  • 科普扫盲|掌握这些命令,玩转Linux
    1.ls[选项][目录名|列出相关目录下的所有目录和文件 1-a列出包括.a开头的隐藏文件的所有文件2-A通-a,但不列出"."和".."3-l列出文件的详细信息4-c......
  • 结构体指针
    一、定义结构体变量的两种方法:1、在主函数内部进行定义图中所述 structfunfirst其中的first就是一个结构体变量的名称2、定义结构体时顺便定义例如图中的a二、如何实现......
  • C中指向二维数组的指针
    形参中在程序中定义一个指向二位数组的指针的时候,只能用第二种,换句话说,第一种形式只能用在形参中。......
  • <二>强弱指针使用场景之 多线程访问共享对象问题
    代码1#include<iostream>#include<thread>usingnamespacestd;classA{public: A(){cout<<"A()"<<endl;} ~A(){cout<<"~A()"<<endl;} vo......
  • 指针处理多维数组的列
    指针处理二维数组的行比较简单,但处理二维数组的列就没那么容易了,因为数组是按行而不是按列存储的。下面的循环对数组a的第i列清零:inta[NUM_ROWS][NUM_COLS],(*p)[NUM_CO......
  • 指针实现字符串排序
    题目描述在主函数中输入5个字符串(每个字符串的长度不大于20),并输出这5个字符串。编写一个排序函数,完成对这些字符串按照字典顺序排序。然后在主函数中调用该排序函数,并输......