#include
using namespace std;
void reverse();
int main()
{
printf("enter a sentence: ");
reverse();
return 0;
}
void reverse()
{
char c;
scanf("%c",&c);
if(c != '\n')
{
reverse(); //這一步以後轉到哪裡執行語句
printf("%c",c);
}
}
如果你follow過code,通過callstack可以看出其執行過程以及運算流程;在這裡簡單的解釋一下:在main()中,第一次調用reverse(),進入reverse()後,定義了一個char變量(是放在棧中的),接下來檢測輸入是否為換行,如果不換行(這裡應該注意的是此處局部變量的生命周期並未結束,所以保存在棧中),就繼續再次執行reverse();直到遇到換行;接下來的輸出過程就是剛才定義的變量的出棧過程。這裡應該注意的是c變量不是同一個變量;