如何声明一个函数来接受一个指向int数组的指针

时间:2013-12-10 16:37:08

标签: c

很抱歉,如果这看起来像一个新手CS问题,但我正在尝试拾取一些目标c并检查指针,我正在尝试将指针传递给一组整数(请参阅所有大写评论问题 - 我可以告诫真的很困惑这一切是如何运作的;我保证我知道了一次。)

我有:

int (*d)[];  //a pointer to an array of ints.
int e[3]={12,45,789};

d=&e; // works
a=g(d);
NSLog(@"here is %i", a);
...

//  THIS PART IS THE PROBLEM
// trying to declare for passing a pointer array of ints
int g(int []); // no
int g(int *[]); // no
int g(int (*)[]); // no

int g(myArray){ // ERROR conflicting types for g
    return 2313459;
}

如何声明此函数接受指向int数组的指针(或者我还想做其他事情)?

THX

1 个答案:

答案 0 :(得分:1)

您可以通过指向数组的指针或通过指向第一个元素的指针传递数组。样品是:

#include <stdio.h>

int g(int (*A)[])   //  A is a pointer to an array.
{
    return (*A)[1];
}

int h(int A[])      //  A is a pointer to the first element.
{
    return A[1];
}

int main(void)
{
    int (*d)[];
    int e[3] = { 12, 45, 789 };
    d = &e;
    printf("%d\n", g(d));   //  Pass a pointer to the array.
    printf("%d\n", g(&e));  //  Pass a pointer to the array.
    printf("%d\n", h(*d));  //  Pass a pointer to first element.
    printf("%d\n", h(e));   //  Pass a pointer to first element.
    return 0;
}