1. 程式人生 > 其它 >玩轉雙指標

玩轉雙指標

一、演算法簡介

雙指標主要用於遍歷陣列,兩個指標指向不同的元素,從而協同完成任務。也可以延伸到多
個數組的多個指標。

若兩個指標指向同一陣列,遍歷方向相同且不會相交,則也稱為滑動視窗(兩個指標包圍的
區域即為當前的視窗),經常用於區間搜尋

若兩個指標指向同一陣列,但是遍歷方向相反,則可以用來進行搜尋,待搜尋的陣列往往是
排好序的。

二、指標小知識

對於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;
}

 輸出結果為: