1. 程式人生 > >C語言指標淺談

C語言指標淺談

一,變數

       C語言中,變數是記憶體和暫存器中一個用識別符號命名的儲存單元。定義一個變數之後,就可以知道兩個資訊:1變數的名字,2.變數的地址(即它在儲存單元的位置) 。就像旅客住進酒店之後,酒店便知道了旅客的名字和門牌號這兩個資訊一樣。

形如:

int a =3;

      這樣就定義了一個int型變數,它的名字叫一個,它的值為3;

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

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

      注意 “&” 取地址符。對一個變數賦值時,在C語言中會先按地址找到這個變數,然後再將值賦,即在此需先取得a的地址,即先找到a的記憶體中的位置,然後賦給它值,這種賦值方法是電腦科學中的一種慣例。

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

         例如,對一下兩個變數輸出它的地址

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

       

二、指標

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

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

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

      1.定義   

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的地址,如若求a的值則可通過*p來取得,即*p和a等價。

好了,本次淺談先到此為止,由於本人才學疏淺,文章中難免出現紕漏和錯誤,還望讀者能過指出,謝謝。