void square(int num) {
num = num * num;
}
int main()
{
int x = 4;
square(x);
printf("%d\n", x);
}
我得到了这段代码,它应该通过对我的整数“x”进行平方来给出答案“16”。
但是,我被要求修改代码以“通过引用传递”。
我在这里和那里尝试了很多东西,但看不到任何其他选项可以让这段代码运行而不会出现错误,例如“无效的二进制操作数”或“'unary *' 的无效类型参数”
这是我目前得到的:
void square(int* num) {
*num = num * num;
}
int main()
{
int* x = 4;
square(&x);
printf("%d\n", x);
}
我做错了什么?
最佳答案
你必须改变
int* x = 4;
到
int x = 4;
因为,x
是 int
类型,而 &x
将是 int *
类型,这是您需要的传递给 square()
。
然后,在 square()
中,您需要使用
*num = *num * *num; //*num === type int, num == type int *
注意:推荐使用int main(void)
作为函数原型(prototype)。
关于c - 修改代码以通过引用传递,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29522079/