C 指標的應用

2021-09-11 06:50:39 字數 1725 閱讀 5883

一、指標與陣列

首先看一段程式,來了解陣列名與指標之間的用法。

#include "opencv.hpp"

using namespace std;

using namespace cv;

int main()

; int *aptr = a;

for (int i = 0; i < 3; i++)

waitkey(0);

return 0;

}

輸出結果:

可以發現a[i]、aptr[i]、*(aptr+i)、*(a+i)都能訪問陣列中的元素。上述4種方式訪問資料時是等價的。

二、指標與函式

看下列程式,來了解指標作為引數時的兩個特點。

#include "opencv.hpp"

using namespace std;

using namespace cv;

void arraycopy(int *src, int *dest, int size);

void display(const int *array, int size);

int main()

; int b[3];

arraycopy(a, b, sizeof(a) / sizeof(int));

cout << "the data of array a is:";

display(a, sizeof(a) / sizeof(int));

cout << "the date of array b is:";

display(b, sizeof(b) / sizeof(int));

waitkey(0);

return 0;

}void arraycopy(int *src, int *dest, int size)

cout << size << " data copied" << endl;

}void display(const int *array, int size)

cout << endl;

}

從上面的程式可以看出:通過指標的間接引用或者陣列操作,我們可以在函式內實現對實參的修改(arraycopy函式)。但將指標作為函式引數也有很大的***,指標可以指向記憶體中的任何乙個資料,這樣就破壞了函式的黑盒特性,系統也因此變得不安全。為了避免這點,可以使用const來保護指標指向的資料,如上述程式中的display函式。

三、指標作為返回值

#include "opencv.hpp"

using namespace std;

using namespace cv;

int * max(int *a, int size);

int main()

; cout << "the max value is:" << *max(a, sizeof(a) / sizeof(int)) << endl;

waitkey(0);

return 0;

}int * max(int *a, int size)

return max1;

}

C 指標的應用

指標是c 的乙個非常強大的特性,它能使我們直接訪問計算機的記憶體,指標可以用來引用乙個陣列,乙個字串,乙個整數或者任何其他變數。這種強大的功能使得指標在c 程式設計中是非常普遍的,而同時,指標的知識又顯得有那麼些 繁雜 有必要清晰地做個總結。指標,就是記憶體位址。我們一般會宣告乙個變數是整數int,...

C 指標應用

int main char str1 hello world char str2 hello world char str3 hello world char str4 hello world if str1 str2 printf str1and str2 are same n else prin...

C 快慢指標的應用

快慢指標的應用 1 判斷單鏈表是否存在環 如果鍊錶是乙個環,就好像操場的跑道是乙個環一樣,此時快慢指標都從煉表頭開始遍歷,快指標每次向前移動兩個位置,慢指標每次向前移動乙個位置 如果快指標到達null,說明鍊錶以null為結尾,沒有環。如果快指標追上慢指標,則表示有環。如下 bool hascirc...