【发布时间】:2016-10-18 23:33:15
【问题描述】:
所以我正在尝试构建一个接受 *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 ?我做了任何错误的声明吗?
顺便说一句,i 是一个全局值,等于 0,并且每次递归调用函数时都会增加。
【问题讨论】:
-
"N 是字符串的长度"。这意味着
str[N-0]始终是 NUL。因为根据定义,C 字符串将 NUL 字符作为最后一个字符,该字符位于strlen索引处。 -
while (N > 1) { swap(&str[0], &str[N-1]); N -= 2; str++; }可能会这样做。