如何避免指针,指向'\ 0'?

时间:2016-05-02 14:53:09

标签: c++ function recursion

这个功能的想法是交换一个单词的字母。它适用于偶数量的字母,但是当它很奇怪时,却没有。我知道mix(a + 2)给出了一个在'\ 0'之后的值,这就是为什么它在输出后输出一些随机数。我如何修改我的if语句,以便我可以避免这个问题?抱歉这个愚蠢的问题,但我还是编程的新手。

#include <iostream>
using namespace std;

void mix(char* a) {
    if (*(a+1)) {
        char temp = *a;
        *a=*(a+1);
        *(a+1)=temp;

        mix(a+2);
    }
}

int main() {
    char a[] = "angela";
    mix(a);
    cout << a;
}

1 个答案:

答案 0 :(得分:3)

请确保*a也不是'\0'

#include <iostream>

using namespace std;

void mix(char* a){

    if (*a && *(a+1)) {
        char temp = *a;
        *a=*(a+1);
        *(a+1)=temp;

        mix(a+2);
    }
}

int main()
{
    char a[] = "angela";
    mix(a);
    cout << a;

    return 0;
}