指针传值问题。

请问一下为什么输出的数没有返回值?就是代码中的a,没有值。

include<stdio.h>

int fun(int *p)
{

int sum=0;
for(int i=0;i<10;i++)
{
    sum=sum+i;
}
p=&sum;
return 0;

}
int main()
{

int a;
fun(&a);
printf("%d",a);

}
a的值不能这样从函数传给主函数吗?

阅读 1.8k
2 个回答

p=&sum;这句改成*p = sum;

p是一个指针变量,一开始指向a,你那样写是把p本身赋值为sum的地址,赋值后p指向sum。修改后的意思是把p所指向的变量赋值为sum,也就是把a赋值为sum。这样结果才是正确的。

int fun(int *p)
{

int sum=0;
for(int i=0;i<10;i++)
{
    sum=sum+i;
}
p=&sum;
return 0;

}
int main()
{

int a;
fun(&a);
printf("%d",a);

}

当然可以,
你发现有什么不同吗?
仔细看看你的 ”分号“ , 这种坑,踩几次就记住了。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进