2015-04-01 69 views
-5

我有一个任务,我无法弄清楚这部分。如何声明函数中的数组并调用C中的函数

该任务要求我创建两个独立的函数并在主函数中调用它们。所以我的问题是调用指向数组的指针的语法是什么,以及如何在主程序中调用该函数?例如,

int function_1(int x, *array); 

我该如何拨打function_1?还是我完全失去了这里?

我要补充一点,任何时候我尝试并调用与阵列的功能,我得到这个错误: [Warning] assignment makes pointer from integer without a cast [enabled by default]

+2

你可以简单的google一下“C函数”。在我看来,没有任何研究已经完成。 – Hozikimaru 2015-04-01 16:25:02

回答

1
int function(int x, char *array) 
{ 
    //do some work 
    return 0; 
} 

而且在主

int main() 
{ 
    char arr[5] = {'a', 'b', 'c', 'd'}; 
    int x = 5; 
    function(x, &arr[0]); 
    return 0; 
} 
-1

有趣的是,数组已经指针所以如果你想传递一个数组作为指向你的函数的指针,你只需传递你声明的数组!我在下面举了一个小例子,虽然我不知道你的代码应该做什么。我通过了function_1(...)这个数字12,然后是数组指针。

int function_1(int x, *array) 
{ 
    ... 
} 

int main() 
{ 
    //declare a ten element integer array 
    int arr[10]; 

    //calls the function, passing in 12 for the integer, and a pointer to the array. 
    function_1(12, arr); 

    ... 

    return 0; 
} 

我希望这个清除一点点。与方阵[]一起使用方括号的方法实际上是你可以用C中的所有指针做的事情。你并不需要太多考虑那个部分,但是请记住数组已经是指针了,所以你不需要需要做任何事情来通过它们作为指针。事实上,你可以重写你的函数,只需使用一个数组作为参数,这样,而不是使用指针一个*

int function_1(int x, int array[]) 
{ 
    ... 
} 
+2

数组和指针是不同的。只是数组很容易衰减成指针。 – 2015-04-01 16:36:55

+0

嗯。好,谢谢。你不必通过引用来传递它们来修改函数中的数组内容,但是正确的? – Dan 2015-04-01 16:41:18

+0

从另一个函数访问数组中的数据的正常方式是,按值传递指向数组的指针。你通常把它写成'function_1(15,arr)',因为在这种情况下(和许多其他的),数组'arr'会衰减为一个指针。 – 2015-04-01 18:06:51