关于指针变量作函数参数的一个疑问

cl819586378 2012-10-09 06:38:15
#include<stdio.h>
int area(int *i,int l)
{
int d;
d=*i+l;
return d;
}

void main()
{
int *a,b,c;
scanf("%d %d",&(*a),&b);
c=area(a,b);
printf("%d\n",c);
}
这段代码运行时候一定出问题这是为什么????
#include<stdio.h>
int area(int *i,int l)
{
int d;
d=*i+l;
return d;
}

void main()
{
int a,b,c;
scanf("%d %d",&a,&b);
c=area(&a,b);
printf("%d\n",c);
}
这样就正确了
...全文
85 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
angel25184521 2012-10-09
  • 打赏
  • 举报
回复
对于指针a,你只是声明,而没有给其进行初始化,所以指针a指向的是内存中一个未知的区域,这就有很大的潜在危险,比如指向的是系统区等等,应避免出现这样的情况,所以哪怕是我们事先不知道该指向哪里,把它先声明为null是很好的。
AndyZhang 2012-10-09
  • 打赏
  • 举报
回复
其实就是应该去了野指针的地址,所以不行

要申请空间就应该没问题
newtee 2012-10-09
  • 打赏
  • 举报
回复
scanf("%d %d",&(*a),&b)=scanf("%d %d",a,&b) 你见过这样的scanf?
virtualxmars 2012-10-09
  • 打赏
  • 举报
回复
修改一:

void main()
{
int *a,b,c,d;
a = &d;
scanf("%d %d",&(*a),&b);
c=area(a,b);
printf("%d\n",c);
}


修改二:

void main()
{
int *a,b,c;

a = new int;
scanf("%d %d",&(*a),&b);
c=area(a,b);
printf("%d\n",c);

delete a;
}
newtee 2012-10-09
  • 打赏
  • 举报
回复
&(*a)=a 所以是错的
virtualxmars 2012-10-09
  • 打赏
  • 举报
回复
你的代码中,只是定义了a指针,但是没有为它申请内存,这意味着,a可能指向内存中的任意位置。所以scanf会随即往内存中写内容。这通常会导致程序崩溃。

69,371

社区成员

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

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