1. 程式人生 > >C語言筆記 第八課 goto 和void分析

C語言筆記 第八課 goto 和void分析

第八課 goto 和void分析

遭人遺棄的goto

高手潛規則:禁用goto
專案經驗:程式質量與goto的出現次數成反比
最後的判斷:將goto打入冷宮
8-1 goto副作用分析

void的意義

void修飾函式返回值和引數
如果函式沒有返回值,那麼應該將其宣告為void
如果函式沒有引數,應該宣告其引數為void
void修飾函式返回值和引數是為了表示“無”
#include <stdio.h>
f()
{
}
int main()
{
int i = f(1,2,3);
return 0;
}

不存在void變數

C語言沒有定義void究竟是多大記憶體的別名,沒有void的標尺
無法在記憶體中裁剪出void對應的變數
#include <stdio.h>
int main()
{
void var; //error
void array[5]; //error
void * pv;
return 0;
}

小貼士

ANSIC:標準C語言的規範
擴充套件C:在ANSIC的基礎上進行了擴充
#include <stdio.h>
int main()
{
printf(“%d\n”, sizeof(void));
return 0;
}
上面的程式碼在ANSI C編譯器中無法通過編譯,但是對於支援GUN標準的gcc編譯器而言是合法的。

void指標的意義

C語言規定只有相同型別的指標才可以相互賦值
void指標作為左值用於“接收”任意型別的指標
void
指標作為右值使用時需要進行強制型別轉換

8-2通過void實現MemSet函式
小結:
現代軟體工程中禁用goto語句
void是一種抽象的資料型別
void型別不能用於定義變數
void型別用於宣告函式無引數
void型別用於宣告函式無返回值
可以定義void

型別的指標
void*型別的指標可以接受任意型別的指標值