标题:编译和运行
只看楼主
蔡君君
Rank: 1
等 级:新手上路
帖 子:17
专家分:0
注 册:2016-10-31
结帖率:100%
已结贴  问题点数:9 回复次数:1 
编译和运行
#include <iostream.h>
void swap(char &a,char &b);
int main()
{
char * ap="hello";
char * bp="how are you?";
swap(* ap,* bp);
cout <<"ap:"<<*ap<<endl;
cout <<"bp:"<<*bp<<endl;
}
void swap(char &a,char &b)
{
int temp;
temp=a;
a=b;
b=temp;
}
为什么编译的时候没有显示任何错误,但是运行的时候却直接显示这一整个文件出现错误,没有办法进行正常运行。
搜索更多相关主题的帖子: include hello 
2016-11-05 10:19
书生牛犊
Rank: 14Rank: 14Rank: 14Rank: 14
来 自:星夜征程
等 级:贵宾
威 望:10
帖 子:1101
专家分:5265
注 册:2015-10-27
得分:9 
char * ap="hello";//声明了一个字符指针,指向一个静态变量“hello”,而swap函数试图对静态变量进行修改当然就导致出错了。
另外,题主用int temp来交换char[],,脑洞不可谓不大啊,
下面是一段我自己修改的代码,应该不是唯一的解决方案。
程序代码:
#include <iostream>
using namespace std;
void swap(char* &a,char* &b);//依然是引用,不过引用的是字符指针
int main()
{
const char * ap="hello";//声明ap指向一个不可以修改的字符串,但是我们任然可以修改ap
const char * bp="how are you?";
swap( ap,bp);
cout <<"ap:"<<ap<<endl;
cout <<"bp:"<<bp<<endl;
}
void swap(char* &a,char* &b)
{
char* temp;
temp=a;
a=b;
b=temp;
}





[此贴子已经被作者于2016-11-5 10:37编辑过]


φ(゜▽゜*)♪
2016-11-05 10:23



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-470736-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.248085 second(s), 9 queries.
Copyright©2004-2025, BCCN.NET, All Rights Reserved