首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> C語言 >> 關於C語言

C語言細節27:void參數、默認int返回、return默認值、void指針遞增

     編輯:關於C語言

C語言細節27:void參數、默認int返回、return默認值、void指針遞增

1. 無參函數必須寫 void

a() { return 3; }  // 隱式 int a()
b(int a, int b) { return a+b; }  // 隱式 int b(int, int)

int main() {
    printf("%d\n", a(2));    // 3(傳參被忽略)
    printf("%d\n", b(300,5000)); // 5300
}

現代標準:C99移除隱式int,**必須顯式聲明返回類型**。編譯器應報警告/錯誤。

3. return 無表達式默認返回值不確定

void *p;
p++;  // 錯誤:void 無大小,無法指針運算
  • ANSI C (VC6.0):報錯 pointer to void cannot be incremented
  • GNU C (GCC/MinGW):視為char*,遞增1字節,編譯通過

建議:需字節級操作時顯式轉型(char*)p,代碼可移植、意圖明確。

運行輸出(GCC)

func a return = 3
func b retunr = 5300
-------------------------

p++在GCC下無輸出(無錯誤),VC6.0編譯失敗。

總結

  1. 無參函數寫void f(void)
  2. 顯式聲明返回類型,別依賴隱式int
  3. 非void函數所有路徑必須返回值
  4. void*不可遞增,需轉char*做字節操作

這些細節區分了「能跑」與「標準、可移植、安全」的代碼。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved