中易网

c语言中void函数的返回值,是怎么回事,例如下面这个函数

答案:6  悬赏:0  
解决时间 2021-01-30 02:31
c语言中void函数的返回值,是怎么回事,例如下面这个函数
最佳答案
void 代表空返回值。即无返回值
所给的案例中,swap函数是一个无返回值函数
但是该函数带两个输入参数
当主函数调用该函数时
只需要给定两个输入参数即可
该函数执行完毕后,无返回值
接下来继续往下执行,执行printf语句。追问好古老的问题啊
全部回答
void 是没有返回值的 如果要有返回值 void的地方改成返回值得类型 如 string int 等 然后再程序的最后一行 增加 return 你要返回的值即可
这里是指针传值,修改指针指向的数据,导致数据修改
----------------
但是这个程序有些问题
修改一下
#include
void swap(int *p,int *q); //C、C++不支持函数嵌套定义
int main()
{
int a,b,*m,*n;
a=2;
b=3;
m=&a;
n=&b;
swap(m,n);
printf("%d %d\n",a,b);
return 0;
}
void swap(int *p,int *q)
{
int t;
t=*p;
*p=*q;
*q=t;
}追问嵌套定义不可以吗?那为什么我在vc编译器上可以运行,而且上课老师也是这么讲的啊追答我也不明白C怎么回事了,反正最好不要嵌套定义,默认情况C/C++会出错的。。
没有return 就没有返回值
你这个使用的是指针参数,指针被该变原来的值也被改变
返回类型定为void是指没有返回值。
函数返回有两种方式一种是通过返回值返回,一种是通过出参返回。
当一个参数是以指针地址形式传入函数的时候,就很有可能是出参。一个函数使用地址传入数据,他保证地址不变的情况下,改变地址所指向的值,这样就可以做到双向传输了。
就如void swap(int *p,int *q).函数传入了p和q两个地址,而函数内部对p和q的两个地址所指向的数值进行了交换,这样函数表面看起来没有返回值,其实他的两个形参所指向的数值变化了,也就是完成了函数功能了。追问你的意思是不是说,值传递是单向的,而地址传递和引用传递是可以双向的?追答是的,值传递仅仅只能从函数外往里传,地址和引用传递都可以作为双向的。而且这在具体开发里面应用很普遍。
被调函数根本就没有传参数回主函数。这里使用的是指针来改变变量的值。这里传的参数是指针,也就是变量的地址。在调用函数里面用地址改变了变量的值。可能你要对指针多一些理解追问在被调函数中改变了地址中的值,但是主函数是怎么知道的,难道不需要告诉他什么他就可以直接判断地址中的值已经改变了吗 为什么你的回答和下面一位的回答不一样啊 感觉有点冲突,还是我理解错了,能不能去看下啊,我不知道听谁的?追答内存地址在程序运行的时候是一致的。你直接改,人家也是去拿那个地址的东西,拿到的当然是改过以后东西。我觉得没有冲突呀。都是指用指针改变变量的值,只是表达的方式不一样啊。可能你有一个矛盾就是别人说多返回值,而我说没有返回值。其实只是说法不一样而已。用指针修改变量的值,也就相当于是返回了值,所以很多地方都说多参返回。但是实际上是没有返回的。。这是概念问题。。把你弄糊涂了。追问你的意思是不是说,在被调函数中已经改变了内存中的内容,无论是被调函数还是主函数中的变量的值是直接从内存中拿的,所以因为在被调函数中已经改变了内存中的值,所以主函数从内存中拿到的值已经发生了变化(而所谓的值的返回也是从内存中把值调出来给相应的变量)追答变量不存在内存存哪。整个程序都是存在内存。。只要你用到这个变量就会从内存中把值调出来给变量,没有所谓的返回。都说了多参返回只是一个概念。意义上是这样。所以很多书上都讲多参返回。可以说那不是返回值,也可以说是。实际上函数有没有返回值是看你写的函数。你知道这个意思就行了,两种说法都是可以的,没必要限死。。要不然你学起来很痛苦的。。。值传递是复制值,主调函数把参数复制一份给被调函数,复制的是值,所以在被调函数里面修改不影响主调函数,因为是复制品。而传指针则是复制的地址,复制了一份变量的地址,地址都是指向那个变量,所以你改变那个地址指向的变量的值,当然在主调函数也会受到影响。当然,你可以在被调函数里面修改复制过来的地址,是不会影响到主调函数的。但是修改地址指向的值就不一样。C++的新功能就是引用传递,引用是一个变量的别名。实际上还是那个变量。只是用了另外一个名字。复制的也就是那个变量的名字,还是那个变量。只是用的不同的名字。还有我不明白你为什么说这里有
嵌套定义,这里只是函数的声明,后面有个分号,就算是声明变量一样声明函数,只是说后面有这个函数,并没有实现函数。因为在C语言中,前面定义的函数是不可以用到在后面定义的函数的。这里因为main()函数要用到swap()函数,所以必须在前面进行申明一下。。。。。。。。。。。
我要举报
如以上问答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
两个眼睛外边这一圈为什么很红
PS3 ff13 雷光的召唤兽怎么获得?完全打不过
中国建设银行ATM(兴化大街)地址有知道的么?
为什么我正常说话总感觉一点底气也没有 说话
理光MP 1811L打印机无法打印出文件,驱动也安
弱电箱不要模块该怎么接
LEACREE减震器总成T猫两支八 折的活动结束了
男朋友老是跟他朋友说,是认真的,不是开玩笑的
现在考驾驶证收费标准
这又是什么车啊
联想Y400安装固态硬盘好吗?效果明显吗?
私家鞋柜地址在什么地方,想过去办事
a6使用汉地机油可不可以
真三国无双5.。为什么我的马是黑王 但是和曹
福州飞云峡生态景区好玩吗
推荐资讯
刚生的小女孩取什么小名好?
fifa17球员视角锁30帧怎么办
求VB大神....一个学生缴费注册系统。。。做好
为什么这张图上的新风机组要连接在排风机房上
双色球46期蓝球谜语
用于句末的标点符号有哪些
superuser 更新二进制文件时root失败
像蛇类的爬行动物,还有四肢,身体黑色是什么
求siro_1774
伏哈 悲剧结尾 如:hp花海 开始是宠文但最后
求一首八十年代末的外国老歌(MTV),记得是一
为啥冰红茶再来一瓶换一瓶冰的还要加五角钱?
手机登qq时,显示手机磁盘不足,清理后重新登
刺客的套装怎么选啊?