值傳遞:將實參的值複製至形參的相應儲存單元中,實參與形參占用不同儲存單元,單向傳遞
即指向實參的儲存單元,形參和實參占用相同的儲存單元
引用傳遞: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...