C語言中指針和取地址符&的關系


一 概念定義:

  嚴格說起來,應該這么講:指針存的是地址,而&運算符是取變量的地址。
  指針原理:

   其實計算機中的內存就像一個個抽屜(一兆內存就相當於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 }

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM