1樓:匿名使用者
您好!首先,我認為上面的程式是有錯誤的
1、一維陣列名c代表陣列中第一個元素的地址,其型別是int *而fun()函式的引數是int型別,所以資料型別不匹配,程式根本無法執行
2、如果忽略1的錯誤,這個程式也是沒有實際意義的,因為第二個迴圈中執行的輸出c,還是一個地址,那麼結果應該是輸出了10個相同的無意義的值,既不是答案a也不是答案b可以將上面fun()函式中的c和printf()中的c修改為c[i]如果的是c[i]的話,那麼答案肯定是a,這是不用懷疑的原因:本程式中,當fun()函式執行時,
在記憶體的棧區為形參a和b分配空間,
然後把c[i]的值給a,c[i+1]的值給b,也就是把和c[i]一樣的值放進了a所對應的記憶體空間,把和c[i+1]一樣的值放進了和b對應的空間
再然後a和b的值互換,
注意只是形參a和形參b所對應的記憶體空間裡的值互換至於陣列成員c[i]和c[i+1]原來是幾現在還是幾,整個過程就沒修改陣列中的任何元素,也沒有互換順序而下面的for迴圈就是簡單的列印陣列中的所有元素,那肯定和剛定義時的一樣
另外,如果想在一個函式中修改陣列中的元素,那麼可以使用指標作為fun()函式的形參
然後將陣列名作為實參
僅供參考!呵呵
2樓:匿名使用者
答案應該是a
函式的引數傳遞問題。
如果函式引數就這樣如題定義的話,那在呼叫的時候只是把傳進來的引數複製進函式進行運算。
如果在定義形參的時候用到了取地址符號「&」,那麼在呼叫函式的時候就會直接對傳進來的引數本身進行運算。
如果該函式如此定義:
那麼陣列中的元素次序才會改變。
3樓:
void fun( int a, int b)裡面不執行實參的數資料上的交換,如果要執行函式數字交換的話應該是這樣的:
void fun( int *a, int *b)不知道lz有沒有打錯題目,fun(c, c[i+1])這裡和本身定義的函式有出入,傳入資料型別不匹配。
4樓:
首先不說答案是對的還是錯的,你呼叫函式 fun 函式就有問題,fun的第一個引數要求是 int 型,而你傳遞的是一個陣列首地址。
如果忽略那個錯誤,答案肯定是選 a
建議你查閱資料:c語言中函式的值傳遞和指標傳遞方式。
5樓:匿名使用者
呵呵,答案是a。
將fun函式該如下就行了:
void int (int *a,int *b)當然要呼叫正確。
6樓:大風雪
這個你寫錯了吧,c == &c[0] ,是一個地址.
男82年08月29日女87年09月02日2023年什麼時候結婚好?求高手
2011 4 1 二月28日辛卯年 辛卯月 丙戌日 衝龍 庚辰 煞北 星期五 2011 4 3 三月初一辛卯年 辛卯月 戊子日 衝馬 壬午 煞南 星期日 2011 4 4 三月初二辛卯年 辛卯月 己丑日 衝羊 癸未 煞東 星期一 2011 4 5 三月初三辛卯年 壬辰月 庚寅日 衝猴 甲申 煞北 星...
08年09月29現在的牛奶能喝了嗎
可以了,20日後生產的沒有問題,如果擔心,就別喝檢查出問題那幾種就ok了,也可以喝豆奶,營養也不錯 央視 晚間新聞 三鹿牌嬰幼兒奶粉事件發生後,國家質檢總局在完成嬰幼兒奶粉三聚氰胺全國專項監督檢查後,又緊急組織開展了全國液態奶三聚氰胺專項檢查。檢查結果顯示,市場上絕大部分液態奶是安全的。美國食品藥品...
09年9月好歌,09年9月好歌推薦
偏愛一個人的浪漫 星空物語 蘭花指分身情人 我要的飛翔 愛的華爾茲 生生世世 魂多餘的流星 最天使我該怎麼做 忘記時間 傷心的時候可以聽情歌 這是我最近聽過新歌,都挺好聽的,都 親身體會過,希望有你喜歡的 我覺得劉基俊的熱情和說一聲感謝挺好聽 不知為什麼 有一種很自然就跟著節拍走的衝動 不是因為寂寞...