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);
}
我做错了什么?
答案 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)
作为函数原型。