修改char指针?

时间:2016-10-18 23:33:16

标签: c string pointers char

所以我试图构建一个带有* char并反转它的函数。该函数有两个参数(N是字符串的长度)

void reverse_str(char *str, int N){
    char temp;
    temp = str[i];
    str[i] = str[N-i];
    str[N-i] = temp;
    if (i == N)
    {
        return;
    }
    i++;
    reverse_str(*str, N);
}

但由于某些原因,当编译器到达代码的第三行时; str[i] = str[N-i];它返回指针空'\0'

是否可以在不制作副本的情况下修改str?我做过任何错误的宣言吗?

BTW i是一个等于0的全局值,每次递归调用该函数时都会增加。

1 个答案:

答案 0 :(得分:1)

N = N -1 在调用函数之前作为第一步。这将解决问题。

如果N是长度,则任何char_array [N]将为'\ 0',因为它是结束字符。 (基本上是字符串终结符)。您希望在\ 0之前对所有内容进行操作,但不包括它。