字符串倒叙完整版

#include<iostream>
char *revstr(char *s,int len)
{
	char *start=s;//在这句会出现错误指针,是因为指针没有初始化,默认初始化为0xcccccccc。下面一句同理。
	char *end = s+len-1;
	char temp;
	if(s==NULL) return NULL; 
	else
	{
		while(start<end)
		{
			temp=*start;
			*start++=*end;//报错:check.exe 中的 0x774815de 处有未经处理的异常: 0xC0000005: 写入位置 0x010578a0 时发生访问冲突
			*end--=temp;
		}
		return s;
	}
	
}
   
int main(void)
{
	
	//char str[]="abcd";
	char *str="abcd";//改成上面语句
	printf("%s\n",revstr(str,4));
	return 0;
}
char  *str = "abcd"; 字符串变量str是保存在栈上,但字符串“abcd”是一个常量,它是保存在常量区的,*start++ = *end;和*end-- = temp都是改变了常量,所以会报内存写错误,可以定义一个栈上的变量char  str[] = "abcd";,就可以运行成功了。

你可能感兴趣的:(内存,C语言)