用gcc的请进来看看,这段程序太叫我郁闷了!!!!

chl 2003-12-19 05:00:50
#include <stdio.h>
#include <stdlib.h>
#include <string.h>

int main(int argc, char *argv[])
{
char str[]={"xyz"},str1[]="abc",str2[]="efg";
char *p;//***
char *s;//***
p=str;
strcpy(s,p);
printf("%s,%s",s,p);
printf("\r\n%d,%d",s,p);
printf("\r\nlen:%d",strlen(p));

system("PAUSE");
return 0;
}

就这段小小的C程序,把声明*p和*s的顺序调转编译运行会有很不同的效果,一个正常,一个出错,
我在win2k,linux的gcc都试过了,你试试。
...全文
38 12 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
glacierrr 2003-12-19
  • 打赏
  • 举报
回复
s = new char[strlen(p) + 1];
strcpy(s, p)
delete []s;
liyunjie 2003-12-19
  • 打赏
  • 举报
回复
我很莱,但我很想知道假如把P全部拷贝到S,应如何修改呢?还有给S 分配了内存,该如何释放啊?我是初学者,诚请各位高手赐教!谢谢。
BenWong1981126 2003-12-19
  • 打赏
  • 举报
回复
是内存分配的问题,至于为什么恰好不把P COPY 到S不出错是因为S指向的是一段闲置的内存吧
qhgary 2003-12-19
  • 打赏
  • 举报
回复
运行不会出错只能说是巧合,但是这并不表明这段程序永远不出错,他一定会在某种条件下面崩溃,还是前面朋友们说得那样,指针没有初始化,他的后果是不可预测的。
kopp 2003-12-19
  • 打赏
  • 举报
回复
printf("\r\n%d,%d",s,p);
是不是在这段出错?。
chl 2003-12-19
  • 打赏
  • 举报
回复
这里有另外一个版本,运行不会出错的!!!为什么呢?

#include <stdio.h>
#include <stdlib.h>
#include <string.h>

int main(int argc, char *argv[])
{
char str[]={"xyz"},str1[]="abc",str2[]="efg";
char *s;//***
char *p;//***
p=str;
strcpy(s,p);
printf("%s,%s",s,p);
printf("\r\n%d,%d",s,p);
printf("\r\nlen:%d",strlen(p));

system("PAUSE");
return 0;
}
haitun88 2003-12-19
  • 打赏
  • 举报
回复
是的,你的s没被分配内存,当然报错.
chl 2003-12-19
  • 打赏
  • 举报
回复
是纯C,不是cpp啊
lovecreak 2003-12-19
  • 打赏
  • 举报
回复
我试了一下,我觉得你这是内存越界了吧
*s并没有分配内存,它存储的是一个随机数,但后面的
strcpy(s,p);
会把s里的内容当作一个地址,这当然报错了
zgycool 2003-12-19
  • 打赏
  • 举报
回复
char *p=new char[];
char *s=new char[];
hdqqq 2003-12-19
  • 打赏
  • 举报
回复
strcpy()

s指针有问题,没有分配内存.
layman2008 2003-12-19
  • 打赏
  • 举报
回复
s没有初始化

#include <stdio.h>
#include <stdlib.h>
#include <string.h>

int main(int argc, char *argv[])
{
char str[]="xyz",str1[]="abc",str2[]="efg";
char *p;//***
char *s;//***
p=str;
s = p; ///////////////
strcpy(s,p);
printf("%s,%s",s,p);
//printf("\r\n%d,%d",s,p);
//printf("\r\nlen:%d",strlen(p));

system("PAUSE");
return 0;
}

65,187

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

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