c - 为什么我不需要 scanf 的符号? (在 C 中)

标签 c function pointers scanf ampersand

void getnums(int *a, int *b);

int main()   
{  
    int a;
    int b;
    int c;
    getnums(&a,&b);
    c = a + b;
    printf("a + b = %d\n", c);
    return 0;  
}

void getnums(int *a, int *b)
{ 
    printf("a:? ");
    scanf("%d", a);
    printf("b:? ");
    scanf("%d", b);
}

为什么我在 scanfs 中的 a 和 b 之前不需要 & 符号? (代码目前有效。)

最佳答案

因为 scanf 以指针作为参数(这样它就知道要修改什么变量),而 ab 已经是指针了。

关于c - 为什么我不需要 scanf 的符号? (在 C 中),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10521463/

相关文章:

c++ - 如何使用 makefile 生成 .h 头文件并在同一个 makefile 中使用它来编译源代码?

c++ - 递归函数的正确返回方式

c++ - 如何将成员函数传递给基类构造函数?

将 u_int32_t 转换为 char **

c++ - 将值传递给 const 引用参数?

c - 为什么要执行跳转指令呢?

当函数打印指针数组的内容时,c 程序崩溃

c - (mysql_real_query) 在插入一些记录时中断

function - 从 lisp 中的整数列表中消除每次出现的 x

Linux 中的 C 线程?