吾爱破解 - LCG - LSG |安卓破解|病毒分析|www.52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 1025|回复: 29
收起左侧

[求助] C中函数的形参必须要用指针才行吗?

[复制链接]
一剑飘零 发表于 2022-1-15 20:24
本帖最后由 一剑飘零 于 2022-1-15 21:00 编辑

一个简单的数字前后位置互换,很奇怪为什么传不了值?有的函数为什么可以传值?新手勿喷。
[C] 纯文本查看 复制代码
#include <stdio.h>
int huhan(int a,int b);
int huhan(int a,int b){
        int temp;
        temp = a;
        a=b;
        b=temp;
        return a,b;
}
int main()
{
        int a = 5,b =6;
huhan(a,b);     //就算我写:huhan(5,6); 这样还是不行,就是不执行互换。难道真的只有指针才行吗?
printf("a=%d,b=%d",a,b);

return 0;
}



输出:a=5,b=6
我想要的是a=6,b=5.

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

zfl 发表于 2022-1-15 20:38
别纠结了 ,确实要用指针
zjpggbond 发表于 2022-1-15 20:39
zjpggbond 发表于 2022-1-15 20:40
shineben 发表于 2022-1-15 20:43
第一:函数返回值只能是1个,不能返回2个,除非用指针
第二:huhan和main两个函数的变量a,b是个自的,不是同一个,你在main里面输出肯定都是main里面的a,b,仔细去看看auto变量的有效范围
平淡最真 发表于 2022-1-15 20:45
int huhan(int &a,int &b)  引用传递也行
 楼主| 一剑飘零 发表于 2022-1-15 21:00
zjpggbond 发表于 2022-1-15 20:39
第八行应该是b=temp吧

确实。哈哈,眼真尖。
zxl1227 发表于 2022-1-15 21:07
这两种形参
传地址(&a,字符串,&a[i]等作指针)
      在函数中使用传地址是可以记录(传递)值(此处的值就是进行所在函数运算后的值)
传变量(a,b等)
      特征就是无法记录(传递值),无论函数中发生什么运算了,他返回仍然是原值


ps   你的具体问题中我再提醒一点交换值,你用指针时候,交换记得这样交换
(下面为函数部分,main部分我就不写了)
int temp;
temp=*p;
*p=*q;
*q=temp;


不能这样交换(函数中设一个指针)三个指针进行交换
下面是错的
int *temp;
temp=p;
p=q;
q=temp;


 楼主| 一剑飘零 发表于 2022-1-15 21:15
本帖最后由 一剑飘零 于 2022-1-15 21:34 编辑
zxl1227 发表于 2022-1-15 21:07
这两种形参
传地址(&a,字符串,&a等作指针)
      在函数中使用传地址是可以记录(传递)值(此处的值 ...

谢谢。感谢指点。
平淡最真 发表于 2022-1-15 21:27
一剑飘零 发表于 2022-1-15 21:15
谢谢。就是想知道有没有不用指针的方法可以调用传递函数的值。

不是好几个人回你吗?   用引用的方法
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则 警告:本版块禁止回复与主题无关非技术内容,违者重罚!

快速回复 收藏帖子 返回列表 搜索

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2024-4-26 07:58

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表