簡體   English   中英

C中的簡單反向字符串算法Output的解釋

[英]Explanation of Output For Simple Reverse String Algorithm in C

這只是一個反轉字符串的簡單程序(如下所示)。

我了解如何實際遞歸部分工作,我只是對將打印語句放在特定位置時得到的 output 有點困惑。

#include <stdio.h>

char *reverse_string(char *x, int start, int end) {
    
    char ch;
    
    if (start < end) {
        ch = *(x + start);
        *(x + start) = *(x + end);
        *(x + end) = ch;
        printf("Before: %s\n", x);
        reverse_string(x, ++start, --end);
        printf("After: %s\n", x);
    }
    return x;
    
}

int main() {
    
    char testString[] = "ABCDEF";
    char *newString[7];
    
    printf("Original: %s\n\n", testString);
    
    *newString = reverse_string(testString, 0, 5);
    
    printf("\nReversed: %s\n", *newString);
    
    return 0;
}
  

當我用筆和紙跟蹤這個程序時,我預測 output 將如下所示:

Original: ABCDEF

Before: FBCDEA
Before: FECDBA
Before: FEDCBA
After: FEDCBA
After: FEDCBA
After: FEDCBA

Reversed: FEDCBA

但是,我得到的實際 output 是:

Original: ABCDEF

Before: FBCDEA
Before: FECDBA
Before: FEDCBA
After: FEDCBA
After: FEDCBA
After: FEDCBA

Reversed: FEDCBA

可能有點難以看出,但我預測的和實際發生的情況之間的前兩個“之前”打印語句是不同的。

我只是有點困惑,為什么它們都一樣?

對此的任何解釋將不勝感激! 謝謝!!

沒關系,我沒有意識到輸出是一樣的。 剛剛檢查了我的程序,我確實正確地復制了它們。 我想我對 output 的預測是正確的,畢竟哈哈。 給大家帶來的不便深表歉意。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM