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

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;
}
...全文
37 点赞 收藏 4
写回复
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";

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

前者是存在栈中,值可以改变的
后者是存在静态存储区,是常量字符串,是不可以改变的啊
回复 点赞
发动态
发帖子
C语言
创建于2007-09-28

3.2w+

社区成员

24.0w+

社区内容

C语言相关问题讨论
社区公告
暂无公告