返回信息流#include <iostream>
using namespace std;
void swap(char*p1,char*p2)
{
char *pt;
pt=p1;
p1=p2;
p2=pt;
}
int main()
{
char*ap="Hello";
char*bp="How are you";
swap(ap,bp);
cout<<ap<<'\n'<<bp;
return 0;
}
[/color]
无法换序啊?就帮助!
这是一条镜像帖。来源:北邮人论坛 / cpp / #71484同步于 2013/6/2
该镜像源已超过 30 天没有更新,可能在源站已被删除。
CPP机器人发帖
字符指针如何交换内容
mtx0612
2013/6/2镜像同步10 回复
订阅后,新回复会通过你的通知中心匿名送达。
9 条回复
亲~我建议你还是去看看C/C++语言的基础知识吧。。。
char* pa = "...";
这种类型的指针是指向静态区段的。。。这种指针指向的地址是不能直接修改的!向楼上说得什么指针的指针~都是没经过实践的!即便用char**作为参数程序还是不能正确执行的!
向你这种情况的话,如果代码规模不大,可以直接用栈内存初始化字符串:
char pa[30]="Hello Beijing!";
char pb[30]="How are you?";
swap(pa, pb);
还要明白,你此时交换的不应该是栈指针,而是栈指针的内容!所以这个swap的实现不应向你写得那么简单,这里写出一种实现方式,其它的方法自己看书琢磨吧:
void swap(char* p1, char* p2)
{
char* ps = (char*)malloc(strlen(p1));
strcpy(ps, p1);
strcpy(p1, p2);
strcpy(p2, ps);
free(ps);
}
【 在 mtx0612 的大作中提到: 】
: #include <iostream>
: using namespace std;
: void swap(char*p1,char*p2)
: ...................
【 在 tonyjansan 的大作中提到: 】
: 亲~我建议你还是去看看C/C++语言的基础知识吧。。。
: char* pa = "...";
: 这种类型的指针是指向静态区段的。。。这种指针指向的地址是不能直接修改的!向楼上说得什么指针的指针~都是没经过实践的!即便用char**作为参数程序还是不能正确执行的!
: ...................
不知道算不算实践
【 在 tonyjansan 的大作中提到: 】
: 算!不需要const~在.rdata里~
:
只是提醒自己和别人这个是const的。
而且个人觉得如果不考虑兼容以前的代码,还是写作
const char *pstr = "hello";
比较标准
char*ap="Hello";
char*bp="How are you";
这样首先是不对的,都是常量了,不能修改。
得这样写:
char ap[]="Hello";
char bp[]="How are you";
【 在 mtx0612 的大作中提到: 】
: #include <iostream>
: using namespace std;
: void swap(char*p1,char*p2)
: ...................
指针是可以改的,指向的内容不能改罢了。
【 在 shengzi 的大作中提到: 】
: char*ap="Hello";
: char*bp="How are you";
: 这样首先是不对的,都是常量了,不能修改。
: ...................