程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> 關於C語言 >> 學點C語言(32):函數 - 返回值

學點C語言(32):函數 - 返回值

編輯:關於C語言

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將不會返回正確的結果*/
}

返回“學點C語言 - 目錄”

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved