當前位置:編程學習大全網 - 網絡軟體 - C語言中的指針到底有什麽用

C語言中的指針到底有什麽用

所有變量值保存在內存中,而每個內存都有壹個地址,所謂地址就是壹個整數編號,如同門牌號碼用於定位(專業術語叫尋址),壹個地址對應壹個字節(8bit)的內存單元。

如今的編譯器,壹個整數int類型的值占用32位bit,也就是4字節,編譯器將第壹個字節的編號定義為該整數的地址,由於保存地址的變量就像壹個箭頭指向某地址,而稱為指針變量。

int a =10; //定義壹個整數變量a,對其賦值10

int *p =&a;//定義壹個指針變量p,對其賦值a的內存地址,&符號意思為引用跟隨其後的變量地址。

cout <<a<<endl; //輸出 a的值:10

cout << p << endl ;// 輸出p的值:XXXXX 其實為a的地址,該地址由編譯器和運行時確定。

cout << *p <<endl; //輸出p指向的地址中的值:10,也就是a的值,*星號放在變量前面意思就是取該變量中的地址所指內存中的值。

讀取過程為:p的值(a的地址)->尋址->取值

由於指針是壹個變量的首個字節的地址,所以要告訴編譯器被指地址包含連續多少個字節,因此指針也有類型。比如上面例子中聲明了p指針是個整數指針,這樣編譯器知道p指向壹個4字節的內存塊。

妳可以將指針變量看做壹般的整數變量來理解,用來保存壹個整數(地址是個整數),只是,該整數代表著某地址,在這裏是a的地址。

在C/C++中很靈活,但是也很危險,也很難學,如果指針指向錯誤的地址會引起程序崩潰,因此在C#中已經被微軟封裝了,但內部還是有指針的。

如果有必要,C#中也可以使用指針,使用非安全代碼,在項目生成選項卡中勾選“允許非安全代碼”,然後就可以使用指針了,不過不建議這麽做。

unsafe

{

int a = 10;

int* p=&a;

}

  • 上一篇:點菜寶初始密碼是多少三位數
  • 下一篇:迷路的解釋
  • copyright 2024編程學習大全網