C語言中函式引數傳遞的方式 值傳遞,位址傳遞

2021-10-08 20:19:04 字數 1897 閱讀 9594

值傳遞:將實參的值複製至形參的相應儲存單元中,實參與形參占用不同儲存單元,單向傳遞

即指向實參的儲存單元,形參和實參占用相同的儲存單元

引用傳遞:c++中

主要內容:

1> c語言中位址傳遞實參的方法

2> 多函式巢狀傳遞實參的方法,二維指標

3> 陣列作為函式引數,而不改變陣列的值,可以複製陣列內容再進行修改

memcpy

() 需要指定複製內容的長度,可以複製陣列、結構體、類等

strcpy

() 針對字串,有'\0'結束標記

#include

#include

#include

// c語言中沒有引用傳遞

void

addown

(int

*x)void

transcapital_1

(char

*str)

printf

("transcapital_1 = %s\n"

, str);}

//函式引數為陣列,但不改變函式外部陣列的值,需要將陣列內容複製乙份

void

transcapital_2

(char str)

printf

("transcapital_2 = %s\n"

, str_);}

void

swapre

(char

**x,

char

**z)

//二維指標,x、y為指標的位址

void

swap

(char

**x,

char

**y,

char

**z)

//二維指標,x、y為指標的位址

intmain()

;transcapital_1

(s);

//陣列名作為函式的引數,傳遞陣列的位址,形參和實參共同占用一段記憶體

puts

(s);

printf

("\n");

//陣列作為函式引數,但不改變外部陣列的值

char s2[10]

=;transcapital_2

(s2)

;//陣列名作為函式的引數,傳遞陣列的位址,形參和實參共同占用一段記憶體

puts

(s2)

;printf

("\n");

char

*ap =

"aaaaaa"

;char

*bp =

"bbbbbb"

;char

*cp =

"cccccc"

;swap

(&ap,

&bp,

&cp)

;//傳遞指標位址,傳實參

puts

(ap)

;puts

(bp)

;puts

(cp)

;system

("pause");

}

//***********輸出結果***************

a=101

len =

5size =

4transcapital_1 = hello

hello

len =

5size =

100transcapital_2 = hello

hello

len =

6bbbbbb

cccccc

aaaaaa

請按任意鍵繼續.

..

C語言中函式引數的傳值問題

c語言中引數的傳值一直比較含糊,今天在網上看到三個面試題的詳解,感覺講的很好,就拿來記下,方便學習和記憶。1.考題一 程式 如下 void exchg1 int x,int y void main 輸出的結果 x y a b 問下劃線的部分應是什麼,請完成。2.考題二 如下。exchg2 int p...

C語言中引數的傳遞方式

c語言中引數的傳遞方式一般存在兩種方式 一種是通過棧的形式傳遞,另一種是通過暫存器的方式傳遞的。這次,我們只是詳細描述一下第一種引數傳遞方式,另外一種方式在這裡不做詳細介紹。首先,我們看一下,下面乙個簡單的呼叫例程 int add int a,int b,int c void main 借助以上例程...

C 語言中,函式的引數和返回值的傳遞方式

c 語言中,函式的引數和返回值的傳遞方式 c 語言中,函式的引數和返回值的傳遞方式有三種 值傳遞 指標傳遞和引用傳遞。以下是 值傳遞 的示例程式。由於func1 函式體內的x 是外部變數n 的乙份拷貝,改變x 的值不會影響n,所以n 的值仍然是0。void func1 int x int n 0 f...