C 修改字符指针?

C 修改字符指针?,c,string,pointers,char,C,String,Pointers,Char,所以我试图构建一个函数,它接受*字符并反转它。该函数接受两个参数(N是字符串的长度) 但是由于某种原因,当编译器到达代码的第三行时str[i]=str[N-i]返回空指针'\0' 是否可以在不复制的情况下修改str?我有没有做过任何错误的申报 顺便说一句,i是一个全局值,它等于0,并且每次递归调用函数时都会增加 donn=N-1 在第一步调用函数之前。这将解决问题 如果N是长度,则任何字符数组[N]都将是'\0',因为它是结束字符。(基本上是字符串终止符)。您希望对\0之前的所有内容进行操作,但

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

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

是否可以在不复制的情况下修改str?我有没有做过任何错误的申报

顺便说一句,i是一个全局值,它等于0,并且每次递归调用函数时都会增加

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


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

“N是字符串的长度”。这意味着
str[N-0]
始终是NUL。因为定义一个C字符串具有NUL字符作为最后一个字符,它在<代码> STRLN < /C> > index > <代码>(n>1){SWAP(& STR〔0〕,and STR [N-1)〕;n= 2;STR++;}可以进行。请考虑<代码> char x[]=“”;int N=strlen(x);N=N-1;反向_-str(x,N)最好让
reverse\u str()
根据需要处理
-1
。我实际上更改了它,当I==0时它可以工作,但当它增加时,它会在第三行为我提供EXC\u BAD\u访问权限。有什么想法吗?你是用字符串来称呼它吗?字符串文字表示不可修改的数组(更准确地说,试图修改它的行为是未定义的)。
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);
}