2015-10-09 70 views
-2

我写一个C程序如下所述:错误使用声明引用参数

#include <stdio.h> 

int sum(int&, int*); 
int main(int argc, const char * argv[]) { 

    int array[]  = {1,2,3}; 
    int temp  = 0; 
    int _result  = sum(temp, 3); 
    return 0; 
} 

int sum(int &sum, int *array) 
{ 

} 

但是,我的程序对声明中的错误,它不知道声明“&”的功能
int sum(int&, int*);

你如何解决这个问题?

+7

引用在C中是不存在的。 – owacoder

+1

以3作为第二个参数的呼叫和没有任何意义。 – LPs

+1

这不是C代码。 C没有参考。如果您使用C++编程,请指定C++而不是C. – fuz

回答

1
  1. 参考文献中未提供
  2. 第二个参数调用和没有意义。

我猜你想要的东西像

#include <stdio.h> 

int sum(int*, int*, int); 
int main(int argc, const char * argv[]) { 

    int array[]  = {1,2,3}; 
    int temp  = 0; 
    int result  = sum(&temp, array, 3); 
    return 0; 
} 

int sum(int *sum, int *array, int array_size) 
{ 
    // sum stuff 
    return *sum; 
} 
+0

是的,我明白了。非常感谢。 :) – DinhNC

1

参考用C,因为他们在c执行不存在++。 如果你想间接访问某个对象,你将通过一个指向对象的指针来完成它。

要接受C函数中的参数,请声明如下函数: T foo(T *bar),其中T是一个类型。这个声明说你必须传递一个指针作为该函数的参数。

当调用一个接受指针作为参数的函数时,可以这样做: T result = foo(&arg)(这里我们假设也返回T类型的对象)。 我们传递参数如&arg,因为一个指针会接受一个内存地址;运算符&返回一个对象的地址。

您的困惑可能来自指针可以间接访问值的事实;通过使用运算符*或解除引用运算符,该引用运算符返回指针保存的地址处的内容。