C 語言的函數可以返回數組以外(不包括數組指標)的任何類型.
不寫明傳回型別, 在以前的 C 語言版本中是預設返回 int, 現在 C99、C++ 已不支援.
void 表示沒有傳回值, 也就無須 return 語句; 如果是其他語句必須有 return 語句.
在 main 函數中(只是 main 函數)若忘掉 return, 有些編譯器會自動添加 return 0;
1. 每執行 return 語句函數將會退出:
#include <stdio.h>int main(void){ printf("111\n"); printf("222\n"); return 0; /* 之後的語句將不會執行 */ printf("333\n"); printf("444\n"); getchar(); return 0;}
2. 如果函數沒有傳回值, 可以借無參數的 return 跳出:
#include <stdio.h>void prn(void);int main(void){ prn(); getchar(); return 0;}void prn(void) { printf("111\n"); printf("222\n"); return; /* 無參數的 return */ printf("333\n"); printf("444\n");}
3. return 後面不是"等號", 但傳回值也可以寫在括弧中:
#include <stdio.h>long long MySqr(int x);int main(void){ int i = 9; i = MySqr(i); printf("%d\n", i); getchar(); return 0;}long long MySqr(int x) { return(x*x); /* 傳回值在括弧中 */}
4. return 與 exit 的區別:
main 函數結束時, 程式也就結束了, return 0; 或 return(0); 返回給系統的 0 表示正常退出.
如果返回了非零的值, 一般寫做: return 1; 或 return(1); 表示異常結束.
在一般函數中 return 只是退出當前函數;
但在任何地方, exit(1); 都是退出程式, 其中的 1 也是給系統的傳回值, 表示異常退出;
異常退出也可以使用 abort(); 這個兩個函數(exit、abort)都聲明在 stdlib.h
#include <stdio.h>#include <stdlib.h>void prn(void);int main(void){ prn(); getchar(); return 0;}void prn(void) { printf("abc\n"); exit(1); /* 異常退出程式 */}
5. 每執行 return 語句函數將會退出:
#include <stdio.h>int main(void){ printf("111\n"); printf("222\n"); return 0; /* 之後的語句將不會執行 */ printf("333\n"); printf("444\n"); getchar(); return 0;}
6. 注意傳回值的類型:
#include <stdio.h>float average(int a, int b, int c);int main(void){ printf("%g\n", average(2,6,9)); getchar(); return 0;}float average(int a, int b, int c) { return (a + b + c)/3.0; /* 假如這裡沒有 .0 將不會返回正確的結果*/}