C语言调用完void函数后如何将值返回主函数实现输出的呢? void函数没有返回值。。。是数组不同
展开全部
我看到你对一条回答的追问,感觉可能get到你的点了。
#include <stdio.h>
void increase(int *a)
{
*a = *a + 1;
}
int main(int argc, char *argv[])
{
int h = 11;
increase(&h);
printf("%d\n", h);
return 0;
}
上面这个函数最后输出的值是12.
void increase(int *a)这个函数传入的是指针,a这个参数在increase函数调用结束后确实就会被释放,但a是一个指针,释放的是这个指针!但是你仔细看increase这个函数体里,已经对a这个指针指向的内容做了更改:*a = *a + 1; 我们修改的并不是a而是a指向的内容也就是h的值,所以h的值已经被改变了!
更多追问追答
追问
嗯!这个我似乎有点明白了,但如果形参不定义指针,就是普通变量呢?像数组之类的又是这样吗
因为今天我刚好看到一道题就是利用选择法在被调用函数中排序,然后再返回数组给主函数
本回答被网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
通过全局变量实现修改
通过函数的指针参数完成返回
通过函数的引用参数完成返回
也可以把数组作为参数直接在函数中修改
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
因为语法就是这样啊,函数调用直接使用其函数名即可,函数是void类型只是标识该函数没有返回值而已。
追问
可是不是说形参被调用完之后,就是被调用函数结束后,其中的值马上就会被释放掉吗,那它是如何实现值传递给主函数的呢?
而且值传递是单向的。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
可以考虑让调用者提供一个存放结果的数组起始地址,函数将结果保存在数组中
追问
什么意思?。。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询