很抱歉,如果这看起来像一个新手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
答案 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;
}