请帮忙看下这里的指针怎么不对??

pijiupaopao 2005-03-25 08:41:22
#include <iostream.h>
#include <windows.h>
void CHstring(char * st1,char * st2) //按地址传递结构体参数
{
while (*st1++ && *st2++)
{
if ( int(*st1)==32)
*st2=*st1;
else
*st2=char((int)*st1+1);
}
}

void main()
{
char p1[]="zwzwzwzwzwzw";//<<=====为什么改为char *p1="zhangzhiwei";就不对?!!
char p2[]="xieliping";//<<======== char *p2="xieliping";
cout<<p1<<" "<<(int *)p1<<endl;
cout<<p2<<" "<<(int *)p2<<endl;
CHstring(p1,p2);
cout<<p1<<" "<<(int *)p1<<endl;
cout<<p2<<" "<<(int *)p2<<endl;
}
...全文
60 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
pijiupaopao 2005-03-25
  • 打赏
  • 举报
回复
谢谢!
呵呵,给完最后20分!
kobefly 2005-03-25
  • 打赏
  • 举报
回复
动态分配内存

char *p1 = (char *)malloc(20);
pijiupaopao 2005-03-25
  • 打赏
  • 举报
回复
哦,谢谢kobefly(科比---开始学习c++!) !!!
那怎么样让char *p1的值改变啊?
kobefly 2005-03-25
  • 打赏
  • 举报
回复
char p1[]="zwzwzwzwzwzw";//<<=====为什么改为char *p1="zhangzhiwei";

两者存储区是有本质区别的

前者是存在栈中,值可以改变的
后者是存在静态存储区,是常量字符串,是不可以改变的啊

69,371

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧