void 型別知識點

2021-07-31 02:21:52 字數 705 閱讀 2319

1、void *型別的指標可以指向任意型別的物件。

2、對於乙個void *的變數p(void *p),它給我們的資訊僅僅是p是乙個指標變數,並不會給我們說明p指向的物件的型別,當然我們也不能使用p進行任何操作,比如*,+,-,/....。原因很簡單,因為我們就只知道他是乙個指標,並不知道該指標指向的物件的型別是什麼,因此該指標上並沒有任何操作。以下對void *的錯誤操作:

*p;++p; --p;p->

3、對於void*型別的指標,我們可以使用強制型別轉換,將其轉化成某一物件型別的指標。然後再執行該物件允許的指標操作。如:

int main()

int a = 8;

void *p = &a;

int *pi = (int *)p;

cout << *pi << endl;//對應輸出為數值8

char *pc = (char *)p; 

cout << *pc << endl;//對應輸出為數值8對應的ascaii碼對應的字元

return 0;

注意這裡的強制型別轉換是新生成了乙個新的指標變數,不會修改p的型別,而是生成了乙個中間變數。

4、實際中應用

malloc函式的返回值為void *:void *malloc (size_t n);

operator new的返回值是乙個void *:void * operator new(size_t size);

void 相關小知識點

c c 中的void和void 一 void void關鍵字表示 空型別 的概念。但是,這裡的 空型別 不表示 任意型別 而是表示不存在的意思,也就是說c c 不允許你寫語句void a,不存在型別為void的東西.void表示 不存在 的意思,可以從void的兩個應用中加以體現 1 void作為函...

String型別知識點總結

我們都知道js中的字串是一種基本型別值,從邏輯上講,基本型別值不是物件,不應當有屬性和方法,但是在日常應用中,我們仍然可以方便的呼叫字串的各種屬性和方法,這是為什麼呢?其實,為了便於我們操作基本型別值,ecmascript還提供了三個特殊的引用型別 string boolean,number,這三個...

型別轉換相關知識點

型別轉換規則 均以補碼形式運算 當賦值運算子兩側的資料型別不同時,需進行型別轉,系統會自動進行轉換。1 float double型賦給int型 直接截斷小數。2 int char型賦給float double型 補足有效位。3 char型賦給int型 數值賦給int型的低8位,其他位補0。4 lon...