[問題] 函式傳遞的問題

看板C_and_CPP作者時間15年前 (2009/05/22 05:19), 編輯推噓2(203)
留言5則, 4人參與, 最新討論串1/3 (看更多)
為什麼這個問題-->見連結例子與其最佳答案 http://zhidao.baidu.com/question/98153744.html 必須用call by address才能正確傳遞函式間的結果 而以下寫法不用call by address也能正確回傳a[n]的結果呢 #include"stdio.h" void F1(int a[]); #define N 5 void main() { int i,a[N]; printf("\n請您輸入任意的五個整數:\n"); for(i=0;i<N;i++) { scanf("%d",&a[i]); } printf("\n排序后的數列為:\n"); F1(a); for(i=0;i<N;i++) printf("%d ",a[i]); //<--為何F(a)寫法不是用call by address也能正確重新編排a[i]內容的排序??? printf("\n"); } /*對任意的5個整數進行由大到小的排序!*/ void F1(int a[]) { int i,j,temp; for(i=0;i<N-1;i++) { for(j=0;j<N-1;j++) { if(a[j+1]>a[j]) { temp=a[j] ; a[j]=a[j+1]; a[j+1]=temp; } } } } -- 你知道每年全球有多少人死於飢餓嗎?美國的「The Hunger site http://www.thehungersite.com/clickToGive/home.faces?siteId=1 網站上只要網友 每天上網按一次,他們就會聯合世界企業家,捐給世界各地饑民一碗食物, 光是去年一整年,「The Hunger site」就送出了4,800萬碗食物給世界各地需要的 饑民.只要連上網路,動動你的滑鼠,加入首頁,每天擊點一次就可以幫助一個人, -- ※ 發信站: 批踢踢實業坊(ptt.cc) ※ 編輯: hateexam 來自: 218.172.107.241 (05/22 05:22)

05/22 08:09, , 1F
在函式的參數列寫 int a[] 和 int* a 是一樣的意思
05/22 08:09, 1F

05/22 10:08, , 2F
呼叫寫陣列的名字a,就是傳陣列開頭的位址進去
05/22 10:08, 2F

05/22 16:48, , 3F
所以傳入陣列的a寫法相當於整數型態傳入的&a嗎
05/22 16:48, 3F

05/22 22:23, , 4F
小弟覺得您可能要把指標的觀念與運用再研究一下喔:)
05/22 22:23, 4F

05/22 22:25, , 5F
varible vs address vs pointer vs array 彼此的關係.
05/22 22:25, 5F
文章代碼(AID): #1A5SLzst (C_and_CPP)
文章代碼(AID): #1A5SLzst (C_and_CPP)