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);
}
错误:使用类型为"char (*([10]"的表达式初始化"char *"的不兼容指针类型 [-werror,-wincompatible-pointer types] 字符 *pt1 = &名称;
name
是一个10char
的数组,这是一个char [10]
。所以&name
是一个指向char
数组的指针,这是一个char (*)[10]
。由于pt1
是一个char *
,你应该给它分配一个指向char
的指针。
因为name
是一个char
数组,name[0]
是一个char
,&name[0]
是一个指向char
的指针。所以你可以做char *pt1 = &name[0];
.
如果你只使用name
,C会自动将其转换为指向其第一个元素的指针,因此您也可以执行char *ptr1 = name;
。
char *pt1 = &name;
&name
是您需要char (*pt1)[10]
存储它的char[10]
类型的地址。
也许你可以这样做。
char *pt1 = &name[0]; //or char *pt1 = name;
在本例中,&name[0]
属于char *
类型。