我对如何声明指向数组或void *的指针感到困惑。
让我们说:
void* myarr[20];
如何声明指向“myarr?”的指针
答案 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.