新手请教一个指针问题
#include "stdafx.h"
#include "string.h"
int _tmain()
{
int i;
char *p1=NULL,*p2=NULL;
for(i=0;i<5;i++)
{
gets(p1);
if(i==0)
strcpy(p2,p1);
if(strcmp(p1,p2)<0)
strcpy(p2,p1);
}
printf("%s",p2);
return 0;
}
执行以上代码为什么会出错啊?请大人们指教一下~~~~
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
![扫码二维码加入Web技术交流群](/public/img/jiaqun_03.jpg)
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(8)
没分配内存 p1 p2都为NULL
char *p1=NULL,*p2=NULL;
指向的都是空地址啊。
要么将指针指向具体变量的地址,要么用alloc开辟一段空间
没分配内存
char p1,低下参数中用&p1
对于任何输入
代码都有义务事先为输入预备存储空间
指针不可能作为字符串的存储空间
本帖最后由 pinkguy 于 2011-05-12 01:06 编辑
回复 1# kexinqw
要想知道为什么上面的代码在运行时出错,就得先弄清楚为什么下面的代码会在运行时出错:
复制代码
引用空指針當然會出錯了, 一般系統結構認為空指針是一個非法的地址, 會拋出異常來幫助程序員定位錯誤.