C語言高手進,提示一下實在不懂

2022-12-30 05:10:56 字數 809 閱讀 5661

1樓:匿名使用者

是這樣的:

p=str+strlen(str)/2+1;這一句中strlen(str)返回7,所以

p=str+7/2+1; 也就是 p=str+4;這句話之後p指向了"abcdefg"中的e,則p-2指向了d,這樣呼叫f(p,p-2);

在f()中,k=*s;*s=*t;*t=k;是將兩個指標指向的字元進行調換,這句話之後,字串變成了"abedcfg",之後s++, t--, 分別指向了f和b,if(*s)的意思是說「如果s指向的不是'\0'的話」,顯然此時指標s指向f不為0,繼續呼叫f()

在f()中,仍然是將兩個指標指向的字元進行調換,變成"afedcbg",

然後再呼叫f(),當執行完k=*s;*s=*t;*t=k;後,字串變成"gfedcba",然後s++,t--,此時s指向了str[7],此為字串結束字元,為'\0',這時if(*s)驗證失敗,程式退出

所以,結果就是fedcba

你把自己想象成機器,每執行完一句話,就改變下自己的狀態,就能想明白了

2樓:匿名使用者

函式f的作用是交換位址s和t內儲存的字元,然後讓s後移乙個位址,t前移乙個位址,如果s內的值不是0,也就是不是'\0'的話,那麼就再交換s和t這2個位址內儲存的字元,如此迴圈,直到位址s內的值是'\0'

main函式中,f(p,p-2),第乙個引數p是字串中間那個字元右邊那個字元的位址,第二個引數是中間那個字元左邊那個字元的位址,f(p,p-2)就是將這個字串中間字元左邊第n個字元和右邊第n個字元對調位置,最後的結果就是將原來的字串倒置,相當於實現了函式strrev的功能

C語言書上例題看不懂,能幫忙看一下嗎

我用文字解釋一下吧,看看能不能清楚,提問的式子我都進行了加粗,希望能看得出來 圖的話我覺得給出的圖已經可以參考講述的,可以結合我的文字看看 這個傳遞陣列名稱的函式,輸入有兩個,乙個是陣列,乙個是陣列長度 那麼我們知道 如果傳遞的n是10,陣列長度是10的話,它的元素的索引應該是0 9,也就是最大索引...

C語言和C 的高手幫個忙吧,寫一下這個程式的註釋,我看不懂考試要考謝謝拉

村野窮儒 include include typedef struct node 定義結構體 stu stu create stu a,int num 定義create函式返回型別 為指向構體的指標 return a int liulan stu a printf n return i stu in...

幫忙解釋一下這個笑話的含義,實在不懂

這個 小沙估計對戒戒有意思 但是嘞 戒戒又喜歡空空 空空呢 又對他的師傅.唐僧呢 又和如來有jq 小白呢 對唐僧情有獨鍾 所以聽了唐僧的話灰常桑心 個人理解 說他們師徒5人 加上小白 搞同性戀 乙個關於斷袖的乙個笑話 這個笑話解釋一下 看不懂 麻省理工是世界頂尖級的理工大學,清華只是國內的.所以.你...