C語言指針(淺談)

一,變量

       C語言中定義一個變量之後,就可以知道兩個信息:1變量的名字,2變量的地址(即它在儲存單元的位置)。就像旅客住進酒店之後,酒店便知道了旅客的名字和門牌號這兩個信息一樣。

       形如:

int a =3;

      這樣就定義了一個INT型變量,它的名字叫一個,它的值爲3;

 

      當對變量賦值時,是通過這樣的操作:

int a;
scanf("%d",&a);

      注意“&”取地址符。對一個變量賦值時,在Ç語言中會先按地址找到這個變量,然後再將值賦,即在此需先取得一個的地址,即先找到一個的內存中的位置,然後賦給它值,這種賦值方法是計算機科學中的一種慣例。

     例如若服務員要給旅客送物品,如果告訴僅僅服務員旅客的名字,服務員幾乎不可能找到這位旅客;但如果告訴服務員旅客的門牌號,那麼就能很快就能找到.C語言中也一樣,對任何一個變量的操作都不是依賴變量名,而是依靠其地址,因爲變量名可以隨意更改,但一個變量一旦定義其地址就在內存或寄存器中固定了下來。

 

         例如,對以下兩個變量輸出它的地址 

#include <stdio.h> 
int main (){
   int  a;
   char b[5];
   printf("a 變量的地址: %p\n", &a);
   printf("b 變量的地址: %p\n", &b);
   return 0;
}

       

 

二,指針

      指針是Ç語言的特色,號稱初學者的第一噩夢,許多人都讓指針造成了巨大的心理陰影,下面就來了解一下。

      首先,指針是一個概念,指針變量是具體實現,這一點先不要弄混。指針變量是專門用來儲存地址的變量。

      指針變量的值是另一個變量的地址。前文提到,對變量的操作必須依靠變量的地址,而如果每次都通過&來取得一個變量的地址,實在有些繁瑣,所以了設立指針變量這一個變量專門來儲存某一個變量的地址

int *p;

       這樣就定義了一個INT型指針P,它就可以儲存一個INT型變量的地址

int a,*p; 
p = &a;

 

#include<stdio.h>
int main(){
    int a = 3;
    int *p;
    p = &a;     //p的值就是變量a的地址
    printf("a的地址是%8d\np的地址爲%8d\n*p的值爲 %8d\n",&a,p,*p);
    return 0;
}
    

運行結果

即p的值爲a的地址,如若求一個的值則可通過* p來取得,即* p和a等價。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章