一、指標與陣列
首先看一段程式,來了解陣列名與指標之間的用法。
#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...