關於C語言中的指標

2021-07-11 16:47:55 字數 1101 閱讀 5796

1、對於已定義的某個變數的讀取:通過該變數來訪問它的值;通過該變數的儲存位置讀取數值(指標)。作業系統會將所有的記憶體單元進行編號。

關於32位作業系統與64位作業系統支援的最大記憶體。計算機底層使用二進位制進行管理,所以32位作業系統支援2的32次方個編號,即4g的記憶體位址。

int a=1;

int b=2;

則0x00010001  和0x00010003這個兩個記憶體編號就是指標。

在程式設計中,通過變數a/b來獲取變數值得讀取方式稱為「直接訪問」;二程式通過記憶體編碼位址先找到對應編碼的記憶體單元,在從記憶體編碼單元上讀取數值的方式為「簡介訪問」。

變數的記憶體位址就是該變數的指標,而用於儲存該記憶體位址的變數就是指標變數(即a和b)。

2、關於指標的使用

*:後面緊跟乙個指標變數,用以讀取該指標變數對應的變數

int a=200//定義乙個int型別的變數

int*p;//定義乙個指向int變數的指標

p=&a;//將a變數的記憶體位址賦值給p這個指標變數的值

nslog(@"%d",*p);//*p表示取出指標p對應的變數,即200;

nslog(@"%d",a==(*(&a)));//取出a的指標,然後將a的指標進行反向取出,得到200;

定義指標變數時,必須使用*來標示定義的指標變數;

c語言是強型別語言,使用指標變數之前必須對其進行宣告。而且一旦宣告了該指標變數的型別後,該指標變數就只能指向對應型別的變數。如int*p只能執行int型別數值的指標;double*q同理。 3.

void swap(int*p1,int*p2){

int tem=*p1;

*p1=*p2;

*p2=tem;

p1=p2=nil;

int main(int argc,char*argv){

@autoreleasepool{

int a=5;

int b=3;

int*p1=&a;

int*p2=&b;

swap(p1,p2);

關於該段**執行的結果:a和b的數值進行了替換,但是p1和p2的數值並沒有發生變化,所以說明在進行運算時只是將指標的副本進行了傳遞,並沒有對指標本身進行傳遞和修改。

C 語言中的指標

指標是 c 語言中的精華,正確靈活的運用指標,可以表示複雜的資料結構,動態分配記憶體,方便使用字串和陣列,呼叫函式返回多結果,直接處理記憶體單元等等。位址就是記憶體的編號,如果拿旅店作為記憶體,那麼每個房間號其實就相當於位址了。當程式編譯時,就會對變數分配記憶體單元,分配時按變數型別分配大小。經過編...

C語言中的指標

隨著程式語言的越來越多,但c語言在程式語言中的地位似乎始終沒有改變,其中得益於c語言中的指標,可以直接去操作記憶體位址與暫存器,執行效率也高,在嵌入式領域運用得尤其廣泛。對於初學者來說指標是c語言中很難翻越的一座大山,指標的掌握程度直接關係到c語言的掌握程度,其實指標並不是那麼高不可攀,只是紙老虎而...

C語言中的指標

指標是c語言中非常重要的東西,書本上寫了好多來解釋裡面的原理,當年老師也跟我們講了好多這方面的東西,一直就是感覺沒有聽明白。直到我看到了指向指標的指標,我建立了自己的理解,不知道是否正確,但是基本能解決遇到的問題。int p p i p。type p,宣告指標變數,type 例如int 告訴計算機p...