一、什麼是指標
定義乙個變數,系統會為變數分配記憶體單元,記憶體單元的每乙個位元組有乙個編號,這個編號就是位址,所以這個位址就指向該變數單元,位址形象化地稱為「指標」,也就是說通過它可以找到以它為位址的記憶體單元。
二、指標變數
定義指標變數:
基型別 *變數名
int *name //整型
char *name //字元型
double *name //雙精度浮點型
float *name //單精度浮點型
...
int i = 1000;
int * point;
point = &i; //&取位址,把1000在的記憶體單元的位址給指標point
注意:
①乙個變數的指標的含義包括兩個方面,一是以儲存單元編號表示的純位址(如編號為2000的位元組),一是它指向的儲存單元的資料型別(如int,char,float等)
② * 指標運算子(或稱「間接訪問」運算子),*p代表指標變數p指向的物件
*p = 1; //賦值語句
指標變數還可以作為函式引數
這個函式進行了值的交換,無返回值,
#includevoid swap(int *p,int *q)
int main()
三、通過指標引用陣列
int a[10] = ;
int *p;
p = &a[0]; //元素a[0]的位址賦給指標變數p ①
p = a; //a是陣列名,因此可以表示陣列元素的首位址 ②
所以①和②等價
引用陣列元素的方法:
① 下標法:通過下標分別表示陣列中的每乙個元素,a[0],a[1],a[2],…
② 指標法:通過指向陣列元素的指標找到所需的元素,(a+i),(p+i),
指向陣列的指標的運算(p 為指向陣列中乙個元素的指標)
①加減乙個整數:p + 1;p - 1;
p+1是指向同乙個陣列中的下乙個元素,
②自加自減運算:p++;++p,–p,p–;
③兩個指標之間的運算:p1 - p2(只有兩個指標都指向同乙個陣列中的元素時才有意義)
四、通過指標引用字串
字串是存在字元陣列中,就像這樣
char array[20]= ;
char *p = array;
也可以直接通過指標引用陣列
char *p = ;
二者是等價的,都用了陣列,只是第二個相當於是乙個沒命名的陣列。
五、指向函式的指標
如果想呼叫乙個函式,除了可以通過函式名呼叫以外,還可以同過指向函式的指標變數來呼叫該函式。
int main()
int max(int x,int y)
型別名 (*指標變數名)(函式引數表列)
六、返回指標值的函式
七、指標陣列和多重指標
C 語言中的指標
指標是 c 語言中的精華,正確靈活的運用指標,可以表示複雜的資料結構,動態分配記憶體,方便使用字串和陣列,呼叫函式返回多結果,直接處理記憶體單元等等。位址就是記憶體的編號,如果拿旅店作為記憶體,那麼每個房間號其實就相當於位址了。當程式編譯時,就會對變數分配記憶體單元,分配時按變數型別分配大小。經過編...
C語言中的指標
隨著程式語言的越來越多,但c語言在程式語言中的地位似乎始終沒有改變,其中得益於c語言中的指標,可以直接去操作記憶體位址與暫存器,執行效率也高,在嵌入式領域運用得尤其廣泛。對於初學者來說指標是c語言中很難翻越的一座大山,指標的掌握程度直接關係到c語言的掌握程度,其實指標並不是那麼高不可攀,只是紙老虎而...
C語言中的指標
指標是c語言中非常重要的東西,書本上寫了好多來解釋裡面的原理,當年老師也跟我們講了好多這方面的東西,一直就是感覺沒有聽明白。直到我看到了指向指標的指標,我建立了自己的理解,不知道是否正確,但是基本能解決遇到的問題。int p p i p。type p,宣告指標變數,type 例如int 告訴計算機p...