第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

全部開發(fā)者教程

C 語言入門教程

C 語言基礎(chǔ)教程
01 C 語言簡介 02 C 語言的程序結(jié)構(gòu) 03 C 語言的編譯 04 C 語言的標(biāo)準(zhǔn) 05 C 語言中的注釋 06 C 語言中的變量 07 C 語言中的變量類型 08 C 語言的常量 09 C 語言的輸入與輸出 10 C 語言中的 printf() 格式輸出 11 C 語言中的類型轉(zhuǎn)換 12 C 語言中的運(yùn)算符 13 C 語言中的算數(shù)運(yùn)算符 14 C 語言中的位運(yùn)算符 15 C 語言中的邏輯運(yùn)算符 16 C 語言中的三目運(yùn)算符 17 C 語言中的分支結(jié)構(gòu) 18 C 語言中的多重分支 19 C 語言中的分支嵌套結(jié)構(gòu) 20 C 語言中的循環(huán)結(jié)構(gòu) 21 C 語言中的 while 循環(huán) 22 C 語言中的 do-While 循環(huán) 23 C 語言中的 for 循環(huán) 24 C 語言中的多重循環(huán)嵌套 25 循環(huán)實戰(zhàn),打印九九乘法表 26 C 語言中的break和continue 27 C 語言中的 if 語句 28 C 語言中的 switch/case 語句 29 C 語言中的函數(shù) 30 C 語言函數(shù)的定義和聲明 31 C 語言中函數(shù)的參數(shù)傳入類型 32 C 語言中的 main() 函數(shù)參數(shù) 33 make 工具 makefile 34 C 語言中的數(shù)組 35 C 語言中的多維數(shù)組 36 數(shù)組的練習(xí) 37 C 語言中的字符串 38 C 語言中的字符串函數(shù) 39 C 語言字符串練習(xí) 40 C 語言中的指針 41 C 語言中的 struct 42 C 語言中的 union 43 C 語言中的 maclloc free() 44 C 語言中的 enum 45 整體練習(xí)-學(xué)生管理系統(tǒng)
首頁 慕課教程 C 語言入門教程 C 語言入門教程 31 C 語言中函數(shù)的參數(shù)傳入類型

C 語言中函數(shù)的參數(shù)傳入類型

每個函數(shù)如果獨(dú)立的存在是沒有意義的。所以函數(shù)之間必然是相互通信的。而最常見也最常用的函數(shù)通信的方式就是函數(shù)的參數(shù)與返回值。而函數(shù)的參數(shù)是更為重要一些。因為純粹沒有參數(shù)傳入的函數(shù)是很好的。因為要實現(xiàn)某種功能,處理某些數(shù)據(jù),就要從外界獲得數(shù)據(jù)。

1. 值傳入

值傳入是在函數(shù)調(diào)用過程中,將原函數(shù)的數(shù)值復(fù)制一份后,將副本再傳入調(diào)用的函數(shù)中。在函數(shù)中操作的都是副本的數(shù)值。對原有函數(shù)中的原變量是沒有影響的。

2. 引用傳入

引用傳入是在函數(shù)調(diào)用的過程中,將原有函數(shù)中的變量直接傳入被調(diào)用的函數(shù)中。這時在被調(diào)用函數(shù)中操作的變量是調(diào)用函數(shù)的原有變量。這時原有變量中的數(shù)值會跟著函數(shù)的調(diào)用中的操作而改變數(shù)值。

而引用傳入有兩種方式:

  1. 使用數(shù)組
  2. 使用 & 符號

2.1 使用數(shù)組

對于 C 語言來說,由于考慮到效率的問題的。數(shù)組的傳遞一般都是不復(fù)制的。因此函數(shù)中如果傳入的是數(shù)組,那么在被調(diào)用的函數(shù)中其實就是傳入了原始函數(shù)中的數(shù)組,而不是一個副本。

2.1 使用指針

使用指針是為了告訴 C 語言,我們這時希望將原有的變量直接傳入被調(diào)用的函數(shù),而不是一個副本。這種傳入方式在其它的編譯類型的編程語言中也有類似的傳遞方式。

3. 示例

3.1 值傳入示例

#include <stdio.h>

int add(int x)
{
     x++;
     printf("sub function\n x: %d\n", x);
     return 0;
}

int main()
{
     int a = 1;
     add(a);
     printf("mian function\n a: %d\n", a);
     return 0;
}

運(yùn)行結(jié)果:

sub function
 x: 2
mian function
 a: 1

這段程序中,我們在主程序中聲明并賦值了一個變量 a, 接著,我們調(diào)用了一個函數(shù)。在這個函數(shù)中,我們對于傳遞進(jìn)來的變量 x 進(jìn)行了自加操作。然后向屏幕打印此時的變量值。在這個被調(diào)用的函數(shù)執(zhí)行完畢后,我們返回到了主函數(shù)中。然后再次輸出此時的變量數(shù)值。發(fā)現(xiàn)是沒有變化的。

3.2 引用傳入示例

使用數(shù)組示例

#include <stdio.h>

int add(int x[])
{
     x[0]++;
     printf("sub function\n x: %d\n", x[0]);
     return 0;
}

int main()
{
     int a[] = {1};
     add(a);
     printf("mian function\n a: %d\n", a[0]);
     return 0;
}

運(yùn)行結(jié)果:

sub function
 x: 2
mian function
 a: 2

這個示例程序中,我們采用了數(shù)組傳值的方式。其實這里只使用了一個只有一個數(shù)值的數(shù)組。其實和使用一個整數(shù)作為變量的效果是一樣的。我們首先初始化了一個數(shù)組,里面有一個數(shù)值 1 ,然后我們通過數(shù)組傳值到另外一個函數(shù)中。此時我們對這個數(shù)組中的數(shù)值進(jìn)行自加操作,然后顯式此時的數(shù)值。在這些操作結(jié)束后。程序返回到主函數(shù)中。然后顯式此時主函數(shù)中的數(shù)值。發(fā)現(xiàn)已經(jīng)同步發(fā)生了變化。

使用指針

#include <stdio.h>

int add(int *x)
{
     (*x)++;
     printf("sub function\n x: %d\n", *x);
     return 0;
}

int main()
{
     int a = 1;
     add(&a);
     printf("mian function\n a: %d\n", a);
     return 0;
}

運(yùn)行結(jié)果:

sub function
 x: 2
mian function
 a: 2

在這個示例程序中,我們使用了指針進(jìn)行傳值,這樣的話,被調(diào)用的函數(shù)傳遞進(jìn)去的和調(diào)用它的函數(shù)中的值是同一個值。這就是我們在被調(diào)用函數(shù)中進(jìn)行了自加操作后。原來函數(shù)的值也發(fā)生了變化。這個示例可以和之前的值傳遞的示例對照看。這兩個示例的步驟完全一致,只是傳值的方式不同,所以造成了不同的結(jié)果。

4. 小結(jié)

對于函數(shù)的參數(shù)的值的傳遞問題,是程序中最容易出問題的地方。有些時候我們希望在被調(diào)用程序中的數(shù)值變化可以直接影響到調(diào)用這個程序的程序的數(shù)值的變化,有時候我們反而不希望被調(diào)用的函數(shù)中的修改影響到原有程序中的數(shù)值。

所以我們在數(shù)傳遞的過程中會有兩種形式,一種是變量的副本的傳遞,另外一種就是直接將值本身直接傳遞進(jìn)去。通過副本的傳遞,在被調(diào)用程序中的任何修改只是局限在被調(diào)用程序中。那么其本身不會受到影響。而直接傳遞本身進(jìn)入函數(shù)中的傳遞,則會同步修改兩邊的變量數(shù)值。