c - 修改代码以通过引用传递

标签 c pointers

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;

因为,xint 类型,而 &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/

相关文章:

c++ - 覆盖最旧数据的 C/C++ 无锁(或非阻塞)环形缓冲区?

C++:指针输出让我困惑

c - 是否可以更改用 const 限定符分配的变量的值

pointers - 指向对象的类型变量 - Fortran

c - 使用特定的多字节定界符标记字符串

c - 如果事件未决,Linux 上的 pselect() 不会传递信号

在 C 中检查 fwrite 是否成功,perror

c - 为什么编译器将变量理解为指针,而事实并非如此?

c - 为什么打印指针值不需要这个二维数组的星号

c - 想在 C 中创建一个写模式的文件