如何声明一个指针:void指针数组?在c

时间:2014-11-30 09:30:17

标签: c arrays pointers

我对如何声明指向数组或void *的指针感到困惑。

让我们说:

void* myarr[20];

如何声明指向“myarr?”的指针

4 个答案:

答案 0 :(得分:2)

typedef void *myarr_t[20];
myarr_t *ptr_to_myarr;

答案 1 :(得分:2)

我认为你指的是指向void的指针数组的第一个元素的指针。

如果您将使用以下一般方法,则可以执行此操作。假设您有一个类型T

的数组
T myarr[20];

然后,指向数组第一个元素的指针的定义将类似于

T *ptr = myarr;

现在你所需要的只是用T代替你的特殊类型,你就会得到

void * myarr[20];

void * *ptr = myarr;

如果你的意思确实是指向数组的指针,那么接近是以下

T myarr[20];
T ( *ptr )[20] = &myarr;

或者,如果用T代替void *,您将获得

void * myarr[20];
void * ( *ptr )[20] = &myarr;

答案 2 :(得分:1)

void* (*myarr_ptr)[20] = myarr_ptr;

这是我的测试代码:

#include <stdio.h>

int main()

{
    int* myarr[20];
    int * (*myarr_ptr)[20] = myarr;
    printf("%p %p\n", myarr, *myarr_ptr);

    return 0;
}

$ ./a.out 
0x7fff8bd39dd0 0x7fff8bd39dd0

答案 3 :(得分:-1)

void** ptrToArrary = myarr_t; //pointing to base address of array.