p函數(shù)就是個(gè)冒泡遞減排序功能。標(biāo)準(zhǔn)函數(shù)頭寫法應(yīng)該是void p(int a[])而不是void p(int a[5]),即使寫成void p(int a[5]),編譯器也是按void p(int a[])解釋而不按void p(int a[5])解釋,而且這里a[]的意思就是定義a是int *型指針。函數(shù)p中并沒有改變a,改變的是a指向的目標(biāo)a[0]~a[4]。所以不知你問的具體是啥意思……
成都網(wǎng)站建設(shè)哪家好,找創(chuàng)新互聯(lián)建站!專注于網(wǎng)頁設(shè)計(jì)、成都網(wǎng)站建設(shè)、微信開發(fā)、微信小程序、集團(tuán)成都企業(yè)網(wǎng)站建設(shè)等服務(wù)項(xiàng)目。核心團(tuán)隊(duì)均擁有互聯(lián)網(wǎng)行業(yè)多年經(jīng)驗(yàn),服務(wù)眾多知名企業(yè)客戶;涵蓋的客戶類型包括:高空作業(yè)車租賃等眾多領(lǐng)域,積累了大量豐富的經(jīng)驗(yàn),同時(shí)也獲得了客戶的一致稱贊!
先舉個(gè)簡單例子:
#include iostream
using namespace std;
void Add1(int *a)
{
(*a)++;
}
void Add2(int a)
{
a++;
}
int main()
{
int x=1,y=5;
Add1(x);
Add2(y);
coutx" "yendl;
return 0;
}
輸出:
2 5
這兩個(gè)自加函數(shù)中,Add1是指針傳遞,Add2是數(shù)值傳遞,
在調(diào)用Add2(y)時(shí),系統(tǒng)是先建造一個(gè)int型變量a,再將y的值傳給a(此時(shí)y和a是兩個(gè)不同地址的變量,只是兩者值相同),然后a++,卻對y沒有任何操作,故在函數(shù)調(diào)用結(jié)束后,釋放a,而y沒任何變化;
在調(diào)用Add1(x)時(shí),系統(tǒng)先建造int型指針a,然后將實(shí)參x的地址傳給了指針a,故此時(shí)a與x是指向同一地址,即共享統(tǒng)一數(shù)據(jù),當(dāng)對地址a內(nèi)的數(shù)據(jù)進(jìn)行操作,就是對x進(jìn)行操作。a++時(shí)自然也對x++,當(dāng)函數(shù)調(diào)用結(jié)束,指針a釋放掉,x的值此時(shí)已經(jīng)發(fā)生了變化。
這就是兩者不同,地址傳遞的參數(shù)都是指針類型,于數(shù)值傳遞不一樣。
至于選擇那種傳遞,就要看這個(gè)程序的具體目的和功能了,一般要對參數(shù)進(jìn)行修改的要用地址傳遞,而只是調(diào)用參數(shù)的數(shù)據(jù)進(jìn)行其他計(jì)算并不需要修改數(shù)據(jù)本身宜用數(shù)值傳遞。
還有什么不明白嗎
void是是C語言的一個(gè)關(guān)鍵字,其含義為空。在C語言中,單獨(dú)的void有兩種用途,均用于函數(shù)中。 1 用于函數(shù)返回值。形式為 void func_name(...); 代表函數(shù)沒有返回值。在這樣的函數(shù)中,調(diào)用return語句時(shí),不需要也不可以有參數(shù)。注意,寫成 func_nmae(...); 的形式,在部分編譯器中可以編譯成功,但并不是沒有返回值,而是有一個(gè)默認(rèn)的整型(int)返回值的意思。 2 用于函數(shù)參數(shù)列表。當(dāng)函數(shù)沒有參數(shù)時(shí),需要定義為 xxx func_name(void); 的形式,表示本函數(shù)不需要任何參數(shù)。注意,如果寫成 xxx func_name(); 的形式,與void不同,不是沒有參數(shù),而是函數(shù)參數(shù)不定,可以接收任何長度的參數(shù)。
void 代表空返回值。即無返回值
所給的案例中,swap函數(shù)是一個(gè)無返回值函數(shù)
但是該函數(shù)帶兩個(gè)輸入?yún)?shù)
當(dāng)主函數(shù)調(diào)用該函數(shù)時(shí)
只需要給定兩個(gè)輸入?yún)?shù)即可
該函數(shù)執(zhí)行完畢后,無返回值
接下來繼續(xù)往下執(zhí)行,執(zhí)行printf語句。