-1

我想将指针作为数组的大小元素传递

例子:

void hello(int array1[how can i refer pointer "ptr" here][2])
    {
   // i want to access the array used in the main() here
    printf("hi");
    }

int main()
{
        int c=5;
        int *ptr=&c;

        a[*ptr][2];
       a[0][1]=0;
       a[0][2]=4;

 }   

我很抱歉我的问题在这里不清楚,我想在我的 hello() 函数中访问 main() 函数中使用的数组。

4

5 回答 5

1

几乎已经回答了,你不能调用数组中的地址a[0x3950f2][2] 总是使用指针*来获取数组中的位置a[*ptr][2]以获得预期值 - 在这种情况下:a[*ptr][2]== a[5][2]。你可以读到这个。

编辑您更新的问题:您不能这样做。您可以在调用函数或在函数中使用变量时使用指针。

您的第二次编辑:

void hello(int **array1)
{
   // i want to access the array used in the main() here
    printf ("hi");
    a[0][0] = 24;
}

int main()
{
    int c = 5;
    int *ptr = &c;
    int **a;
    a[*ptr][2];
    a[0][1] = 0;
    a[0][2] = 4;

    hello (a);
    return 0;
}
于 2013-10-23T08:25:04.853 回答
1

您需要使用 *ptr 来尊重指针,所以

int c = 5;
int *ptr = &c;

a[*ptr][2];

否则,您没有使用 ptr 的值,而是使用了它在内存中的地址,这会返回错误。

于 2013-10-23T08:19:23.227 回答
1

您将不得不使用指针指向的值:

a[*ptr][2];

ptr是指针指向的地址,而不是存储在那里的值。您使用取消引用运算符*来获取值。

于 2013-10-23T08:17:11.243 回答
1

使用解引用运算符*

a[*ptr][2];

该表达式*ptr 告诉编译器使用 指向的值ptr


至于您更新的问题,这是不可能的。但它也不需要,因为它无论如何都是作为指针传递的。

声明函数时,如下:

void foo(int a[5][5])

与此相同:

void foo(int a[][2])

也和这个一样:

void foo(int (*a)[2])
于 2013-10-23T08:17:36.373 回答
1

当然,ptr不是类型int,而是类型int *(整数指针)。数组下标必须是类型int

也许你想要的是a[*ptr][2].

于 2013-10-23T08:17:59.767 回答