简单程序中的<error> <main.c> </main.c> </error>

时间:2014-12-23 09:07:40

标签: c xcode

#include <stdio.h>
int ABC(int &n) // Error=> expected ')'
{
     printf("n=");
     scanf("%d",&n);
}

请帮帮我!谢谢:))

4 个答案:

答案 0 :(得分:2)

查看C-FAQ的Question 4.11

  

Q :C甚至有“通过引用传递”?

     

A :不是。

     

严格地说,C总是使用pass by value。你可以模拟传球   通过引用自己,通过定义接受指针和的函数   然后使用&amp;调用时运算符,编译器会   当您将数组传递给函数时,基本上可以为您模拟它   (通过传递指针,参见问题6.4等)。

     

另一种看待它的方法是,如果一个参数有类型,比方说,   int *然后通过引用传递一个整数,并指向一个指针   整数按值传递。

     

从根本上说,C没有任何真正等同于正式传递   引用或C ++引用参数。 (另一方面,   类似函数的预处理器宏可以提供一种“传递”的形式   名称 ''。)

     

另见问题4.8,7.9,12.27和20.1。

通过引用来模拟传递:

int ABC(int *n) 
{
     printf("n=");
     scanf("%d", n);
     printf("%d\n", *n);
     return 0;
}

使用&

进行调用
int x;
ABC(&x);

答案 1 :(得分:1)

您无法使用&符号(&amp;)将参数作为地址获取。所以你可以使用 获取一个变量地址的指针。

int ABC(int *n)
{
   scanf("%d",n);
}

在传递给该函数时,您必须传递变量的地址。

int a;
ABC(&a);

答案 2 :(得分:0)

&address of运算符,它不能作为参数传递给函数。

如果您想修复代码,则需要传递参数n而不使用&

#include <stdio.h>
int ABC(int n) 
{
     printf("n=");
     scanf("%d",&n);
}

答案 3 :(得分:0)

我在c ++中尝试的相同代码只是返回一个值并看到希望这可能会给你一个想法

int ABC(int &n) 
{
     printf("n=")
     scanf_s("%d",&n);
     return n;
}