一 概念定義:
嚴格說起來,應該這么講:指針存的是地址,而&運算符是取變量的地址。
指針原理:
其實計算機中的內存就像一個個抽屜(一兆內存就相當於1百萬個抽屜),每個抽屜都有一個編號,用於存放數據。
為了方便使用,編譯器允許我們在寫程序的時候,對抽屜進行命名(而不是使用抽屜的編號),這就是變量名。就比如說我們在程序中定義:char C; 這個時候系統會幫我們找一個空閑的抽屜(比方說編號為981的抽屜),命名為
C,用於存放一個字符變量。以后我們在程序里只要使用C這個變量,系統就知道是要對981這個抽屜里的數據進行操作。
指針是什么呢?
指針是我們申請一個空抽屜,里面不放數據,而放編號。比如我們申請一個字符指針:char *ch=&C; 這個時候,ch里面放的是C這個變量的地址(也就是981),其中&是取址符,也就是取C這個變量的地址,而不是值。*ch才
是ch指向的值。
二 實例解析:
下面這個例子 很好的說明了兩者的關系:
1 #include <stdio.h> 2 3 typedef struct 4 { 5 int arr; 6 int brr; 7 }test_array; 8 9 test_array i_test; 10 11 void test(test_array *btest) 12 { 13 btest->brr = 20; 15 printf("btest->brr:%d ",btest->brr); 16 17 } 18 int main() 19 { 20 i_test.arr = 10; 22 test(&i_test); 24 printf("i_test.arr:%d ",i_test.arr); 25 26 return 0; 27 }