void指針和typedef函數

1、void* html

void指針能夠指向任意類型的數據,亦便可用任意數據類型的指針對void指針賦值。 算法

int *pint;
void *pvoid;
pvoid = pint; /* 
不過不能 pint = pvoid; */
若是要將pvoid賦給其餘類型指針,則須要強制類型轉換如:pint = (int *)pvoid;
當心使用void指針類型  函數

按照ANSI(AmericanNationalStandardsInstitute)標準,不能對void指針進行算法操做,即下列操做都是不合法的: spa

void*pvoid;
pvoid++;//ANSI
:錯誤
pvoid+=1;//ANSI
:錯誤 .net

在實際的程序設計中,爲迎合ANSI標準,並提升程序的可移植性,咱們能夠這樣編寫實現一樣功能的代碼: 設計

void*pvoid;
(char*)pvoid++;//ANSI
:正確;GNU:正確
(char*)pvoid+=1;//ANSI
:錯誤;GNU:正確 指針

2、typedef htm

typedef int (*MYFUN)(int, int)
這種用法通常用在給函數定義別名的時候
上面的例子定義MYFUN 是一個函數指針, 函數類型是帶兩個int 參數, 返回一個int  blog


參考: ci

http://blog.csdn.net/yming0221/article/details/6249151

http://www.cnblogs.com/shenlian/archive/2011/05/21/2053149.html

相關文章
相關標籤/搜索