C 语言指针问题

2015-04-02 11:01:47 +08:00
 HxSeek

我觉得这样子做的话··输出的答案应该会是 s1变成bstring1 s2变成astring2才对, 可是调试的时候,发现那句话错了··请问是为什么?导致它们之间不能互相赋值?

代码如下:

include<iostream>

using namespace std;

void exchange(char *a,char *b)
{
char c;
c = *a;
*a = *b; //为什么这句话会错
*b = c;
}

int main()
{
char *s1 = "atring 1";
char *s2 = "btring 2";

exchange(s1,s2);
cout << s1 << endl;
cout << s2 << endl;

return 0;

}

3497 次点击
所在节点    程序员
21 条回复
danny200309
2015-04-03 08:05:07 +08:00
#include <stdio.h>
#include <iostream>

using namespace std;

void exchange(char *a, char *b)
{
char c[] = "ctring";
*c = *a;
*a = *b;
*b = *c;
}

int main()
{
char s1[] = "atring";
char s2[] = "btring";

exchange(s1,s2);
std::cout << s1 << std::endl;
std::cout << s2 << std::endl;

return 0;
}

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/181057

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX