小编Uri*_*erg的帖子

void**指针和void*[]作为函数参数

我收到以下警告: incompatible pointer types 'void**' and 'int* [2]'.

当我尝试编译以下代码时:

#include <stdlib.h>

void func1(void *arr[]) { }

int main() {
    int *arr[2];
    for (int i = 0; i < 5; i++) {
        arr[i] = (int*)malloc(sizeof(int));
        *(arr[i]) = 5;
    }
    func1(arr);
}
Run Code Online (Sandbox Code Playgroud)

现在,当我施放arr时它起作用,我(void**)找不到原因.此外我发现我还需要使用以下代码:

#include <stdlib.h>

void func1(void **arr) { }

int main() {
    int **arr;
    int i[] = { 1, 2 };
    int j[] = { 3, 4 };
    *arr = i;
    *(arr+1) = j;
    func1(arr); //Doesn't compile unless …
Run Code Online (Sandbox Code Playgroud)

c arrays pointers casting void-pointers

5
推荐指数
1
解决办法
674
查看次数

标签 统计

arrays ×1

c ×1

casting ×1

pointers ×1

void-pointers ×1