请教一个问题

soulz 2003-10-20 10:31:37
一个例子,本来是想保持str不变的,但是发现调用cop函数之后,str也发生了变化。而且输出显示两次分配的str3[81]的地址是一样的,为什么?又如何实现我本来想实现的功能呢?即按照例子应该输出dddd\ndddd\ncccc\ndddd\n
# include<iostream.h>
# include <string.h>

char *str;
void copy( char *string )
{
char str3[81];
cout<<&str3<<endl;
strcpy( str3,string );
str = str3;
cout<<str3<<endl;
cout<<str<<endl;
}

void cop( char *string )
{
char str3[81];
cout<<&str3<<endl;
strcpy( str3,string );
cout<<str3<<endl;
cout<<str<<endl;
}

void main()
{
char *str1 = "dddd";
copy( str1 );
str1 = "cccc";
cop( str1 );
}
...全文
25 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
soulz 2003-10-21
  • 打赏
  • 举报
回复
谢谢daizh(),不过现在发现这样子做已经达不到我的目的,因为我定义的str指向的数组在函数copy调用完之后已经消失了,所以就是改了之后就没有办法输出str中的内容了,请问有什么方法可以在cop函数仍然可以输出str的值?
soulz 2003-10-21
  • 打赏
  • 举报
回复
呵呵,我本来没有办法用MFC,所以不能用CString,后来看了一个别人的帖子,已经改用MFC了,这个问题也就不存在了。THANKS ALL THE SAME!
panzhaoping 2003-10-21
  • 打赏
  • 举报
回复
你的代码太深奥了
daizh 2003-10-20
  • 打赏
  • 举报
回复
这是巧合,你试一下下面的程序
# include<iostream.h>
# include <string.h>

char *str;
void copy( char *string )
{
char str3[81];
cout<<&str3<<endl;
strcpy( str3,string );
str = str3;
cout<<str3<<endl;
cout<<str<<endl;
}

void cop( char *string )
{
int i = 0;//此处我添加的
char str3[81];
cout<<&str3<<endl;
strcpy( str3,string );
cout<<str3<<endl;
cout<<str<<endl;
}

void main()
{
char *str1 = "dddd";
copy( str1 );
str1 = "cccc";
cop( str1 );
}

69,335

社区成员

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

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