void 指標小結

2021-06-02 02:16:21 字數 1078 閱讀 7986

今天在看memcpy函式原型的時候遇到void指標,我有些地方不明白,就從網上蒐集了一些資料,然後總結一下。

先來看下memcpy函式的原型:

void * memcpy ( void * destination, const void * source, size_t num )

我開始以為void指標可以進行應用和計算,出現如下愚蠢的錯誤:

void * dest,src;

*dest ++= *src++;

知錯就改,補習一下指標的知識。

指標有兩個屬性:指向變數或者物件的位址長度。但是指標只儲存位址,長度則取決於指標的型別 ,編譯器根據指標的型別從指標指向的位址向後定址 指標型別不同則定址範圍也不同。比如: int*從指定位址向後尋找4位元組作為變數的儲存單元 double*從指定位址向後尋找8位元組作為變數的儲存單元。

(1)void指標是一種特別的指標。void指標沒有特定的型別,因此只知道位址而不能由型別判斷出指標所指變數或者物件的長度。

void * vp;

(2)任何型別的指標都可以賦給void指標。不需要型別轉換,vp只是獲取位址,並沒有獲得變數或者物件的長度。

type * p;

void* vp = p;

(3)void指標賦值給其他型別的指標時都要進行轉換

void * vp  =pointer; // vp指向乙個變數

type *p = (type*) vp; //型別轉換

(4)void指標不能引用

void * vp  =pointer; // vp指向乙個變數

*vp // 錯誤的

(5)void指標不能參與指標運算,除非進行轉換

void * dest, *src;

*dest ++= *src++;  //錯誤的

void * vp  =pointer;

(type*)vp++  //進行型別轉換後才可以進行指標運算

void及void指標型別

1.概述 許多初學者對c c 語言中的void及void指標型別不甚理解,因此在使用上出現了一些錯誤。本文將對void關鍵字的深刻含義進行解說,並 詳述void及void指標型別的使用方法與技巧。2.void的含義 void的字面意思是 無型別 void 則為 無型別指標 void 可以指向任何型別...

void指標 void 的用法

指標有兩個屬性 指向變數 物件的位址和長度 但是指標只儲存位址,長度則取決於指標的型別 編譯器根據指標的型別從指標指向的位址向後定址 指標型別不同則定址範圍也不同,比如 int 從指定位址向後尋找4位元組作為變數的儲存單元 double 從指定位址向後尋找8位元組作為變數的儲存單元 1.void指標...

void型別及void指標

基於前面的一篇部落格模擬實現 memcpy 和 memmove 時用到的void 指標展開關於 void 和 void 指標的概述 1.void 相信大家不會陌生,經常定義無返回值的函式是用 void 定義,表示函式無需返回值 void fun void 2.void 的字面意思是 無型別 void...