-
因為,這裡我們使用指標,現在我們分析從主執行開始到執行結束的值和輸出:
i=1,呼叫 sub(&i) 函式,在 sub() 函式中,*s +=1; 所以 s=2; 由於 s 是指標,因此 main() 函式中 i 的值在這裡發生了變化,即 main() 函式中的 i 變為 2, t +=*s; 使得 t=2; reutrn t;回到 main() 函式,我們得到 sub() 函式 2 的返回值; 此時 i=2;
在第二個迴圈中,由於第乙個迴圈中 i 的值改為 2,因此在第乙個迴圈結束時執行了 i++,因此 i=3; 判決書 i<4; 在迴圈中執行語句,呼叫 sub(& i ) 函式,*s+=1; 使得 *s=4; (main()函式 i 也變為 4),t+=*s; 使得 t=6; reutrn t;返回 t,返回 main() 函式,輸出 sub() 返回值 6; 此時 i=4; 第二個迴圈結束,然後執行 I++; 使得 i=5; 判決書 i<4; 跳出迴圈; 週期結束。 程式結束。
主要有三點需要注意,第一:sub() 的引數是乙個指標,指標引數的操作會影響呼叫方實際引數的值,第二:t 是乙個全域性變數,每次呼叫 sub() 方法時,t 都不需要初始化, 所以上一次呼叫會影響下一次呼叫的值。
第三:f(i=1; i<4;i++) 迴圈看似迴圈 3 次,但實際上它的值被改變了,因為 &i 是 sub() 函式的指標引數,所以它實際上迴圈了 2 次,而不是 3 次。
-
首先看第乙個迴圈,i=1,此時呼叫函式sub,*s代表i,s+=1:等價於i=i+1,所以此時i=2,然後下一步就是執行語句t+=*s,相當於t=t+i,結果為2, 所以此時輸出 2;
此時,程式需要返回到 main 函式,以 printf("%4d",sub(&i));在 的末尾,也執行預設的最後乙個語句 i++,所以 i 是 3
然後進行第二個迴圈,s+=1 表示 i 增加 1,所以是 4;
t+=*s 代表 t=t+i,所以是 2+4=6;
所以此時的輸出是 6。
回到 main 函式,執行 i++ 並將 i 設定為 5,這樣就可以退出迴圈。
主功能結束。
程式簡單,但敘事麻煩,瞭望塔主人。
-
在第乙個 for 迴圈中是 i,它執行兩個迴圈;
第二個for迴圈是J,如果i滿足條件,它將執行三個迴圈;
然後當 i=0 時進入迴圈的第一層,當 j=0 1 2 滿足迴圈的第二層條件時,則 k++ 執行 3 次,即 k 為 3,m++ 執行 1 次,即 1; 當 i=1 時,滿足相同的條件,再次執行 j,然後再次執行 k++,此時 k 為 6,第二次執行 m++,即 2。
輸出: k=6, m=2
在你編寫的程式中,a 和 c 都是浮點型變數,兩個浮點型變數在 a==c 等邏輯運算之後的返回值並不是編譯器可以考慮的布林值。 >>>More
男人生來就是為了征服世界,因為他知道,當他征服世界時,會有無數的女人; 乙個女人征服那個男人就足夠了,因為她知道她已經征服了那個男人,也就是說,她已經征服了整個世界。 >>>More