修改代码以通过引用传递

时间:2015-04-08 18:02:46

标签: c pointers

void square(int num) {
num = num * num;
}

int main()
{
int x = 4;
square(x);
printf("%d\n", x);
}

我已经获得了这段代码,它应该通过平方我的整数'x'给出答案'16'。

但是,我被要求修改代码以“通过引用传递”。

我已经在这里和那里尝试了很多东西,并且看不到任何其他选项来让这些代码运行而没有错误,例如“无效操作数到二进制”或“无效类型参数'一元*'”

这是我目前所拥有的:

void square(int* num) {
     *num = num * num;
}

int main()
{
    int* x = 4;
    square(&x);
    printf("%d\n", x);

}

我做错了什么?

1 个答案:

答案 0 :(得分:3)

你必须改变

 int* x = 4;

 int x = 4;

因为,x的类型为int&x的类型为int *,您需要将其传递给square()

然后,在square()内,您需要使用

*num = *num * *num;  //*num === type int, num == type int *

注意:建议使用int main(void)作为函数原型。