關於C語言遞迴逆序字串傳遞引數的細節

2021-09-14 08:42:27 字數 412 閱讀 6630

初步了解遞迴,然後看了乙個用遞迴逆序輸出字串的程式,自己寫出來後總是和目標要求輸出不一致經過慢慢的琢磨及單步跟蹤後終於被我找出了問題!

先附**

#include

void reseve(char *str)

}int main()

在reserve(str)中引數str在傳遞過程中三種不同的傳址方式,會引起不同的輸出結果!

當然reseve(str+1);是正確的傳址方式;

reseve(str++);中str的位址將會不變str=str;不會出現str=str+1;

而reseve(++str)中str的值雖然+1但他在傳遞過程中,先str=str+1;先將str+1的值賦值給str再傳給void resever(char *str),再回溯時×str的值不是『u』,而是『\0』;

字串逆序 c語言

給定乙個含有n個元素的字串,實現逆序。這是個很基礎的問題,實現方式也是很常見的c語言思路。雖然簡單,但是仍然記錄下來。期望 比如char str abcdefg 逆序後為 gfedcba 思路 分別從字串的頭和尾部向中間進發,依次交換頭尾的值,直到在中間相遇。include include void...

c語言 字串逆序

題目描述 寫一函式,使輸入的乙個字串按反序存放,在主函式中輸入輸出反序後的字串 不包含空格 輸入 一行字元 輸出 逆序後的字串 樣例輸入 123456abcdef樣例輸出 fedcba654321分析 這道題目要求將輸入的字串逆序輸出。首先注意要求 不包含空格 所以不能使用gets 來輸入。然後呼叫...

字串逆序 c語言

給定乙個含有n個元素的字串,實現逆序。這是個很基礎的問題,實現方式也是很常見的c語言思路。雖然簡單,但是仍然記錄下來。期望 比如char str abcdefg 逆序後為 gfedcba 思路 分別從字串的頭和尾部向中間進發,依次交換頭尾的值,直到在中間相遇。include include void...