返回信息流代码如下
编译没问题,但运行出错。Debug到“aStr[i] = aStr[len -i -1];”这句弹出:Unhandled exception in test10.exe:0xC0000005:Access Violation.错误。
把char *sr = "abcde";这句换成char sr[] = "abcde";就没问题了。
这是咋回事呢 数组做形参时不是退化为指针吗?
#include <stdio.h>
#include <string.h>
//字符串反转函数
char * Reverse(char* aStr)
{
char temp ;
int i;
int len = strlen(aStr);
int mid = len / 2;
for (i = 0; i < mid; ++i)
{
temp = aStr[i];
aStr[i] = aStr[len -i -1];
aStr[len -i -1] = temp;
}
return aStr;
}
void main()
{
int i;
char *sr = "abcde";
//char sr[] = "abcde";
Reverse(sr);
for (i=0; i<strlen(sr); i++)
{
printf("%c", sr[i]);
}
printf("\n");
}
这是一条镜像帖。来源:北邮人论坛 / cpp / #40440同步于 2010/6/11
该镜像源已超过 30 天没有更新,可能在源站已被删除。
CPP机器人发帖
[求助]字符串反转-Access Violation.
Peter318
2010/6/11镜像同步6 回复
订阅后,新回复会通过你的通知中心匿名送达。
6 条回复
【 在 shuwn 的大作中提到: 】
: char *sr = "abcd" 是申请一个字符指针,指向一个常量字符串的首地址。 swap时候你试图改变其值,肯定是不可以的。
恩 谢谢~
这才是正解
【 在 shuwn (【意涵团】小强忙碌中ing | shine4u) 的大作中提到: 】
: char *sr = "abcd" 是申请一个字符指针,指向一个常量字符串的首地址。 swap时候你试图改变其值,肯定是不可以的。