我們將從指標的語法和使用並結合例子來討論他們的區別。
void 指標:
cpp**
void * pointer_variable;
void這是是作為乙個關鍵字來使用。
例如:cpp**
int i;
float f;
int* exf;
float* test;
then
exf=&i;
int型別指標指向int變數的位址空間,所以是對的。
如果寫成:
cpp**
exf=&f;
cpp**
test=&i;
上面一條語句將會報錯。
void型別指標是可以用來指向任何資料型別的特殊指標。
使用前面的例子,如果我們手動宣告乙個void型別指標:
cpp**
void* sample;
在前面的例子中,如果我們定義的乙個void型別指標去指向乙個float變數的位址空間是完全正確的。
cpp**
sample=&f;
cpp**
sample=&i;
在我們要取得指標所指位址空間的資料的時候使用的是 『*』操作符,程式設計師必須清楚了解到對於void指標不能使用這種方式來取得指標所指的內容。因為直接取內容是不允許的。而必須把void指標轉換成其他任何valid資料型別的指標,比如char,int,float等型別的指標,之後才能使用'*'取出指標的內容。這就是所謂的型別轉換的概念。
null pointer(空指標):
舉例:cpp**
int* exforsys;
exforsys=0;
以上的宣告表示exforsys是乙個int型別的指標,但其不指向任何有效的位址空間,這表明exforsys有乙個空指標值(0)。
void指標和null指標的區別:
cpp**
#include
int *exforsys;
void main()
上面程式**的輸出如下:
null pointer assignment
上面的程式丟擲執行時的錯誤。表明指標變數exforsys還沒有被分配任何有效的位址空間,並且試圖訪問0位址空間就產生了錯誤資訊。
C void指標和NULL指標
我們將從指標的語法和使用並結合例子來討論他們的區別。void 指標 void pointer variable void這是是作為乙個關鍵字來使用。例如 int i float f int exf float test then exf i int型別指標指向int變數的位址空間,所以是對的。如果寫...
void指標和NULL指標
void指標我們稱之為通用指標,就是可以指向任意型別的資料。也就是說,任何型別的指標都可以賦值給void指標。舉例 includeint main 無型別指標沒辦法進行解引用,所以可以強制轉換 例子 includeint main 需要注意 使用void指標,不到必要的時候,不要亂用 如果乙個指標不...
C void型別指標的使用
一般情況下,指標的值只能賦給相同型別的指標。但是有一種特殊的void型別指標,可以儲存任何型別的物件位址,就是說任何型別的指標都可以賦值給void型別的指標變數。經過使用型別顯示轉換,通過void型別值的指標便可以訪問任何型別的資料。主要注意的是雖然通過void型別值的指標便可以訪問任何型別的資料,...