C語言08年09月

2022-12-24 13:06:12 字數 1378 閱讀 6185

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月好歌推薦

偏愛一個人的浪漫 星空物語 蘭花指分身情人 我要的飛翔 愛的華爾茲 生生世世 魂多餘的流星 最天使我該怎麼做 忘記時間 傷心的時候可以聽情歌 這是我最近聽過新歌,都挺好聽的,都 親身體會過,希望有你喜歡的 我覺得劉基俊的熱情和說一聲感謝挺好聽 不知為什麼 有一種很自然就跟著節拍走的衝動 不是因為寂寞...