2019/3/4
typedef void voidp;
等同於typedef void voidp;
voidp a;
a=null;
即定義了乙個可以指向任何型別的指標
typedef voidpf (zallback open_file_func) of((voidpf opeaque, const char filename, int mode));
以上語句定義了乙個函式指標,指向返回值為指標型別,引數分別為指標,字元型和int型的函式
網上的例子:
「問:「typedef int (*funcptr)();」是什麼意思?
答:它定義了乙個型別funcptr,表示指向返回值為int型,引數未指明的函式指標,它可以被用來宣告乙個或多個函式指標,例如:
funcptr func1, func2;
這個宣告等價於下面寫法的函式指標宣告
int (*func1)(), (*func2)();
#define zopen64(filefunc,filename,mode) (call_zopen64((&(filefunc)),(filename),(mode)))
以上語句使用了巨集定義
#define zread64(filefunc,filestream,buf,size) ((*((filefunc).zfile_func64.zread_file)) ((filefunc).zfile_func64.opaque,filestream,buf,size))
以上語句用前面的函式替代後面的函式
後面的函式分為兩塊,前半部分代表函式名,後半部分為函式的引數
*表示找到指標指向的函式
fill_fopen64_filefunc(&us.z_filefunc.zfile_func64)
該函式的引數為指向結構體zlib_filefunc64_def的指標;
函式體中,左側為乙個指向返回值為voidpf型別,引數為(voidpf opaque,const void* filename,int mode)的函式指標
右側為乙個返回值為voidpf型別,引數為(voidpf opaque,const void* filename,int mode)的函式名
所以函式體中內容的作用是:給左邊結構體中的指標配置相應的功能
static用來宣告函式時,被宣告的函式只能在宣告他的檔案中可見,不能被其它檔案所用
const char* mode_fopen=null;
宣告了指向字元型變數的指標mode_fopen
mode_fopen=「wb」;
賦值後將mode_fopen指向"wb"
strcmp(str[0],str[1])
字串比較函式,如果 str1小於 str2,返回負數;如果 str1大於 str2,返回正數;二者相等則返回 0。(相等時返回0)
continue和break的區別
break是跳出乙個迴圈或結束乙個迴圈
continue是立即結束本次迴圈,繼續執行下一次迴圈
while是先判斷後執行,do while是先執行後判斷
c語言 知識點
遞迴方法 遞迴相比迴圈時間上快些,但是 遞迴比較占用空間,如果遞迴的次數超過十萬次後會導致資源占用完畢 標準的 優化技巧 消除迴圈 函式迴圈 函式 就地擴充套件 公共子表示式消除 改進暫存器分配 省略執行時對陣列邊界的檢查 迴圈不變數 移動 操作符長度消減 把指數操作符轉變為乘法操作 把乘法操作變為...
c語言知識點
關於 va args define debug level,format,if level g printlevel else 這裡的 va args 表示可變引數,即上面.傳遞進來的多個引數,是當傳入引數為0時,去掉前面,防止編譯出錯 的另乙個用法如 define xname n x n,那xna...
c語言知識點
目錄流程圖 輸入輸出 運算子資料型別及運算 指標動態分配記憶體 結構體原碼 補碼 反碼 庫函式變數 定義 初始化 為變數賦值,分配記憶體空間 變數作用域 每個變數和函式有兩個屬性 型別和儲存類別。儲存類別分靜態儲存區和動態儲存區 練習流程圖 n s圖 都不屬於關鍵字,屬於庫函式 浮點型 分母型 需要...