-
strcpy(a,"you");
a 在這裡被視為指向二維陣列的第 0 行的 frontispiece 指標,此語句用於轉換字串"you"複製到從第 0 行的卷首開始的儲存空間,儲存後,a[0][0]='y',a[0][1]='o',a[0][2]='u',a[0][3]='\0'
strcpy (a[1],"me");
a[1] 是指向二維陣列第一行第一行的指標,此語句用於新增字串"me"從第 1 行的第乙個指標開始複製到儲存空間,在儲存之後,a[1][0]='m',a[1][1]='e',a[1][2]='\0'
a[0][3]='&';
此語句將替換原來的 a[0][3]='\0'再次覆蓋'&'
最後:a[0][0]='y',a[0][1]='o',a[0][2]='u',a[0][3]='&'
a[1][0]='m',a[1][1]='e',a[1][2]='\0'
-
分配記憶體的二維陣列實際上是一維的,這意味著 a[1] 緊跟在 a[0] 之後,並且您放置了 a[0] 的結束字元。'\0'更改為 &, %s 是按照查詢'\0'如果你確定字串結束了,你自然會完成第二個字串。
-
操作的結果和解釋如圖所示。
-
k,bai 在使用前從 k 的值中減去 du1。
而(--k)表示“智”,先將“道”的值減去1,然後進行轉條件判斷。
k-=3 相當於 k=k-3
所以:shu
在開始時 k=5,然後是 --k,它變為 4,並且滿足迴圈條件,並且滿足輸出 k=k-3=4-3=1。
然後 --k,k 變為 0,並且 while 迴圈條件不滿足,它結束,所以輸出為 1
-
i=1,第乙個 a=3,a=2,表示式:i=( a==b++)a:
b;在變數前面的--中,屬於程式中的must操作,值為2,b++屬於被使用,在程式中單獨使用時會計算該值,所以b的值不會變為2,則--a==b++的結果為true, 所以問號後面跟著--a,表示--必須先計算,所以--a的值是1,最後把1的值賦給i,所以i的值是1,希望採用。
關於++--變數前後的操作規則,請參考---
有關 A++ 和 ++A 之間的區別,請了解 Web 鏈結。
-
首先,確定 2 是否等於 2(a 先變為 2 然後進行比較,b 先變為 2,然後變為 3),捨入值為 --a。 即 1
我的值為 1
-
宣告指標變數 a、b、c
指標變數 a、b 和 c 都指向 malloc 函式生成的儲存空間。 指向同一空間。 (如上圖所示)。
A、B 和 C 分別分配值 1、2 和 3。 保留最後執行的 c=3 意味著儲存空間只剩下 3
b賦值給a,指標變數a、b、c的值其實是一樣的,刪除這個語句不會影響指標變數a、b、c指向的同乙個空間,所以輸出值是一樣的,都是3
其結果是 :3,3,3
-
分析:a、b、c 都是指標,它們都指向同乙個記憶體塊(顯然! 換句話說,a、b、c的內容是一樣的,所以實際上a、b、c三個變數是等價的。
a = 1; *b = 2; *c = 3;是同一記憶體上的所有操作。
a = b;在這句話中,由於 a 和 b 是相同的記憶體塊位址,因此 a 和 b 的內容沒有太大變化。
顯然有:*a = *b = *c = 3; 也就是說,malloc 產生的記憶體內容為 3
http:防吞嚥
-
讓我們談談執行過程。
首先。 i=1,s=0
之後進入乙個迴圈,迴圈的條件是i 100,即如果i滿足i 100,迴圈會繼續,如果不滿足,迴圈就會結束,然後迴圈之後的語句就會被執行。
i=1,i<=100,s=3*s+i=3*0+1=1(代替i=1,s=0)。
i=2,i<=100,s=3*s+i=3*1+2=5(s 變為 1,i 變為 2)。
i=3,i<=100,s=3*s+i=3*5+3=18
i=4,i<=100,s=3*s+i=3*18+4=58
i=5,i<=100,s=3*s+i=3*58+5=179
i=6,i<=100,s=3*s+i=3*179+6=543
i=40,i<=100,s=3*s+i=9118249094292696580
…後面的那個太大了)
i=100,i<=100,s=3*s+i 乘以 10 的 47 次方)。
i=101,i>100,結束迴圈。 輸出
-
1. x>y z 因此,只會執行 x=y; y=z ;
結果是 x=20 y=30 z,仍為 30
2. 輸出乙個由 * 組成的 5 行等腰三角形。
-
如果 i=9 正確,則 m=1、n=1、k=0
如果在程式末尾新增輸入語句,或新增標頭檔案 include,則在程式末尾新增 system("pause");語句,程式執行後不會立即退出,結果可見。 >>>More