首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 更多程式語言 >> 程式設計綜合問答

C 語言 return 語句詳解:返回值含義、void 函數與 main 函數特殊規則

     編輯:程式設計綜合問答

return 的兩種基本用法

1. 帶返回值:return 表達式;

結束函數執行,將表達式值作為函數返回值傳給調用者。表達式類型**必須與函數聲明的返回類型兼容**。

int find(string x) { return 42; }        // 返回 int
string getName(int id) { return "Alice"; } // 返回 string
double calc() { return 3.14 * r * r; }     // 返回 double

2. 無返回值:return;(僅用於 void 函數)

提前結束 void 函數執行,不帶任何值。等效於執行到函數右大括號 }。

void printPositive(int x) {
    if (x <= 0) return; // 提前退出
    printf("%d", x);
}

常見返回值約定(特別是 main / 系統調用)

返回值常見含義適用場景
0成功 / 無錯誤 / 假(布爾上下文)main()、pthread_create、POSIX 系統調用
1一般錯誤 / 真自定義錯誤碼、邏輯真值
-1失敗 / 出錯(常配合 errno)文件操作、Socket、內存分配等系統調用
其他正整數具體錯誤代碼業務邏輯自定義錯誤類型

main 函數的特殊規則

  • int main():必須返回 int。
    - return 0; 或隱式結束(C99+)表示成功。
    - 非零值表示失敗,具體碼由項目約定。
  • void main():非標準(C 標準不允許),部分編譯器兼容但不可移植。
  • return; 在 int main() 中非法(缺返回值)。

進階用法示例

作為邏輯控制流

bool tryDivide(int a, int b, int *result) {
    if (b == 0) return false; // 守衛條件
    *result = a / b;
    return true;
}

返回結構體/指針(需注意生命週期)

Point makePoint(int x, int y) {
    Point p = {x, y};
    return p; // 值返回,安全
}

int* badExample() {
    int local = 10;
    return &local; // 錯誤:返回局部變量地址
}

最佳實踐清單

  1. 函數聲明與定義的返回類型保持一致。
  2. void 函數只用 return; 或省略。
  3. main 永遠用 int main(void) 或 int main(int argc, char *argv[]) 並顯式 return 0;。
  4. 系統調用/庫函數返回值**必須檢查**錯誤碼(如 malloc、fopen)。
  5. 避免返回局部變量指針/引用;動態分配內存需明確所有權文檔。

掌握 return 的類型匹配、控制流作用與約定俗成的錯誤碼體系,是編寫健壯 C 代碼的基石。

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