1樓:匿名使用者
1全部首先,*r=a指指標r指向陣列a的首地址(即r=a[0]),然後f(r);將r中儲存的a[0]的地址傳遞給p指標(void f(int *p)),所以p也指向a[0],p=p+3;之後p指向a[3]=4;所以輸出4,然後返回主函式,再接著列印r(指向a[0]),輸出1
2樓:匿名使用者
這個程式包含1個main函式和1個f函式。 執行main函式裡面的語句,先定義了1個5個數的陣列a,然後定義了1個指標r指向a陣列的第1個數,執行f(r)函式,r是形參即a[0], 然後再來看f函式,他的作用是列印1個數,p=p+3的意思是向後偏移3個數,現在傳入的是r,那麼在f中相當於p,p+3,也就是說r+3 就是a[3] a[3]=4 這個沒問題吧? 然後f函式列印出這個值,結束,返回main函式中,繼續執行,printf("%d\n",*r); 執行這個,r還是執行a[0]的,所以列印1。
因此結果是4 1
這裡的r不會因為作了引數呼叫f就改變了,他是不會變的,你可能是不理解形參,實參,引用所以搞混淆了。而且函式的執行是執行完了才返**用的語句。
3樓:匿名使用者
這個推斷過程用語言無法一下子簡短地寫清楚,建議題主去看下c語言中指標的定義,再回來看這個程式就能明白了。
我只能籠統地說了,你f(*p)函式的作用是把p帶表的陣列的第四個值4列印,main中的printf列印p帶表的陣列的第一 個值 1
求解釋這段C語言左移程式,求這段C語言的解釋 求詳細
你這個 太古老了吧 引數列表 還是這種形式 求這段c語言的解釋 求詳細 80 找你還真不容易,剛才的程式錯了,改了,你看看!include define uint unsigned intvoid delay ms uint uitime void delay ms uint uitime void...
C語言的閱讀題,c語言程式閱讀題,需要詳細解答步驟
首先解釋 p。p是一個指向指標的指標。這是二級間址的用法。void g int main void g int p 呼叫g p 你只要把 p替換到g int p 函式裡面就可以很清楚地發現了 注意 p p,所以這個函式實際上可以看作 只是看作 void g int p 對吧,清楚了哈。那問題又來了,...
C語言 下面要求的C程式怎麼編?
先定義一個字元型陣列,把這一串字串都進去,以後撤出他的串長,然後對這個字串以字元為單位進行一次氣泡排序就可以了。具體的程式 和運 況見 程式 文字 include int main int i,j,n char s 100 t scanf s s for n 0 s n n for i 0 ifor...