for return in main with pointer to pointer to pointer 怎么办?

How to do for return in main with pointer to pointer to pointer?

void    ft_destroy(char ***factory);

int     main()
{
    char name[] = "sebastian";
    char *pt1 = &name;
    char **pt2 = &pt1;
    char ***pt3 = &pt2;
    printf("%s", ft_destroy(pt3));
    return (0);
}
error: incompatible pointer types initializing 'char *' with an expression of type 'char (*)[10]'
      [-Werror,-Wincompatible-pointer-types]
        char *pt1 = &name;

name是10个char的数组,也就是一个char [10]。所以&name是一个指向char数组的指针,也就是一个char (*)[10]。因为 pt1 是一个 char *,你应该给它分配一个指向 char.

的指针

因为 namechar 的数组,name[0]char,而 &name[0] 是指向 char 的指针.所以你可以做 char *pt1 = &name[0];.

如果你只使用name,C会自动将其转换为指向其第一个元素的指针,所以你也可以这样做char *ptr1 = name;

char *pt1 = &name;

&namechar[10] 类型的地址,你需要 char (*pt1)[10] 来存储它。

也许你可以按照下面的方式做。

char *pt1 = &name[0]; //or char *pt1 = name;

在这种情况下 &name[0] 是类型 char *