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

學點C語言(33):函數 - 傳值與傳址、形參與實參

編輯:關於C語言

1. 傳值參數(非指針參數):

#include <stdio.h>

int inc(int x);

int main(void)
{
  int num = 1;

  printf("%d\n",inc(num)); /* 2 */
  printf("%d\n",num);   /* 1; num 並沒有改變,用作函數參數時只是復制過去 */

  getchar();
  return 0;
}

int inc(int x) {
  x++;
  return x;
}

2. 傳址: 參數是指針、參數是地址

#include <stdio.h>

int inc(int *p);

int main(void)
{
  int num = 1;

  printf("%d\n",inc(&num)); /* 2 */
  printf("%d\n",num);    /* 2; num 已被修改 */

  getchar();
  return 0;
}

int inc(int *p) {
  *p = *p + 1; /* 通過地址修改了值 */
  return *p;
}

3. 傳址但不被修改的例子:

#include <stdio.h>

int inc(int *p);

int main(void)
{
  int num = 1;

  printf("%d\n",inc(&num)); /* 2 */
  printf("%d\n",num);    /* 1 */
  /* 雖然函數是傳址,但這裡的 num 並沒有改變; 因為下面的函數中並沒有給指針賦值 */

  getchar();
  return 0;
}

int inc(int *p) {
  return *p + 1;
}

4. 形參與實參:

這只是沒有太大意義的稱呼而已,譬如下面例子中的

x 和 y 是 sum 函數的形參;

i 和 22 是 sum 函數的實參.

#include <stdio.h>

int sum(int x,int y);

int main(void)
{
  int i = 11;

  i = sum(i,22);

  printf("%d\n",i);
  getchar();
  return 0;
}

int sum(int x,int y) {
  return x + y;
}

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

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