fiverhythm 发表于 2020-1-9 14:20:34

传引用报错,找不到错误在哪,求助~


int chageA(int *px)
{
    *px = 12345;
}


int main()
{
    int a ;
    chageA(a);

    cout << a<<endl;
    return 0;
}

小甲鱼视频里说,就算 chageA(&a)变为 chageA(a),计算机也可以直接把a识别为传地址,但是计算机报错了:

"int" 类型的实参与 "int *" 类型的形参不兼容
“int chageA(int *)”: 无法将参数 1 从“int”转换为“int *”

这个传引用是怎么个弄法,不懂了。。。

最后的魁拔 发表于 2020-1-9 14:24:28

你这个a是数组还是啥呢

fiverhythm 发表于 2020-1-9 14:31:54

最后的魁拔 发表于 2020-1-9 14:24
你这个a是数组还是啥呢

就只是一个整数啊?就算我初始化了这个整数也是一样报错。。。

人造人 发表于 2020-1-9 14:52:43

我肯定书上一定不是这么写的,你又在探索事物的本质吗?
老老实实,先学加减法,再学乘除法

#include <iostream>

int chageA(int &px)
{
        px = 12345;
        return 0;
}


int main()
{
        int a;
        chageA(a);
        std::cout << a << std::endl;
        return 0;
}

fiverhythm 发表于 2020-1-9 15:00:19

人造人 发表于 2020-1-9 14:52
我肯定书上一定不是这么写的,你又在探索事物的本质吗?
老老实实,先学加减法,再学乘除法

视频里就是这样写的啊??

人造人 发表于 2020-1-9 15:02:30

fiverhythm 发表于 2020-1-9 15:00
视频里就是这样写的啊??

我不信,截图看看,给个视频链接也行,指明几分几秒

Croper 发表于 2020-1-9 15:03:22

传引用是这么写的:int chageA(int &px)
{
    px = 12345;
}


int main()
{
    int a=0 ;
    chageA(a);

    cout << a<<endl;
    return 0;
}

你是在哪个视频上看的?

人造人 发表于 2020-1-9 15:08:22

Croper 发表于 2020-1-9 15:03
传引用是这么写的:

你是在哪个视频上看的?

chageA还返回int
这样写报错

Croper 发表于 2020-1-9 15:21:20


人造人发表于 2020-1-9 15:03
chageA还返回int
这样写报错
。。。我都没看清。。直接改了下{:5_96:}{:5_96:}

人造人 发表于 2020-1-9 15:29:36

Croper 发表于 2020-1-9 15:21
。。。我都没看清。。直接改了下

我是直接复制到vs改的,改完直接编译,报错,一看发现chageA还要返回一个int,然后直接return 0;

fiverhythm 发表于 2020-1-9 15:49:41

人造人 发表于 2020-1-9 14:52
我肯定书上一定不是这么写的,你又在探索事物的本质吗?
老老实实,先学加减法,再学乘除法

是我错了,我仔细看了视频,传引用不能用 void f(int * x),而是要用 void f(int &x),但是传地址是用 void f(int * x),所以关键倒不是返回值的问题,是里面参数设置

在里的鞭策下,我终于找到问题所在了,谢谢~~

但是,我真不是跳过+-法,而是边学边去提出疑问,探究到底是什么

人造人 发表于 2020-1-9 15:57:08

fiverhythm 发表于 2020-1-9 15:49
是我错了,我仔细看了视频,传引用不能用 void f(int * x),而是要用 void f(int &x),但是传地址是用 vo ...

学编程一定要认真,对于初学者,95%的错误都是不认真造成的
页: [1]
查看完整版本: 传引用报错,找不到错误在哪,求助~