我开发了一个反向字符串程序.我想知道是否有更好的方法来做到这一点,如果我的代码有任何潜在的问题.我期待练习C的一些高级功能.
char* reverse_string(char *str)
{
char temp;
size_t len = strlen(str) - 1;
size_t i;
size_t k = len;
for(i = 0; i < len; i++)
{
temp = str[k];
str[k] = str[i];
str[i] = temp;
k--;
/* As 2 characters are changing place for each cycle of the loop
only traverse half the array of characters */
if(k == (len / 2))
{
break;
}
}
}
Run Code Online (Sandbox Code Playgroud) 我是C的新手,所以这可能是一个愚蠢的问题.我正在编写一段代码如下:
char ar[]="test";
*(ar+1)='r';
Run Code Online (Sandbox Code Playgroud)
这工作正常.但无论何时我这样做:
char *p="test";
*(p+1)="r";
Run Code Online (Sandbox Code Playgroud)
这是分段错误.任何人都可以描述为什么第二种情况会给出分段错误?从记忆的角度来解释将不胜感激.