詳談C 指標型別

2021-05-24 02:44:39 字數 847 閱讀 5055

操作c#中的指標,是一種編寫非託管中的一種技術。

c#中指標型別可能是(儲存在棧)中的值型別,也可能是(儲存在堆)中的引用

型別。不過無論是什麼型別,基本格式都有乙個共同的要求就是必須都是支援非

託管的型別或者空型別。

(這裡順便提一句,非託管的型別編譯依賴系統型別庫,而託管的型別依賴clr中元

資料.)

在c#中支援非託管的型別包括: sbyte, byte, short, ushort, int, uint, 

long, ulong, char, float, double, decimal ,  bool ,enum ,pointer,void和

使用者自定義的結構體型別(但需要注意這裡結構體元素必須也是支援非託管的) 

定義指標型別格式: 

非託管型別* 名稱;

例如:int* p;

這裡需要注意指標型別是一種型別,宣告和一般原c#託管型別一樣.

所以可以支援int* p ,q,不支援int* p,*q表示方法.

1,指標型別做陣列操作

c#非託管型別可以像c++一樣在非託管堆上分配位址,使用stackalloc操作.

並且通過和c++一樣的操作方式*用於取位址實際內容或者索引方式訪問.

例如:static unsafe void main()

//測試內容

for (int i = 0; i < 100; i++)

}注意,這裡main函式需要宣告是unsafe(非託管的**)

2,用於獲得物件位址

static unsafe void main()

除了上面提到的內容外,c#指標型別可以完成幾乎所有c++指標可以實現的操作.

C 指標型別

1.定義 型別 指標變數 型別決定了指向的記憶體空間的大小。指標變數也是一種變數,有著自己的記憶體空間,該空間上儲存的是另乙個變數的記憶體空間。可以使用typedef取別名來減少定義變數時的一些麻煩,如typedef int pointer 2.操作 1 取位址 int p int x p x p指...

詳談c 的引用

引用不是定義乙個新的變數,而是給已經定義了的變數起乙個別名。一旦把引用初始化為某個變數,就可以使用該引用名稱或變數名稱來指向變數。這裡的a和b是同一塊空間的名字。引用做引數 void swap int left,int right void test 上面的 是我們熟知的交換函式,注意left 和r...

C語言指標型別

在c語言中,定義了乙個特殊的資料型別 指標型別。指標型別的變數是專門 用來儲存某個變數的記憶體位址。這樣,我們就可以從指標變數的值取得執行時確切的位址了。eg int a 4個位元組 2000 2001 2002 2003 int b 4個位元組 2004 2005 2006 2007 int a ...