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
.
的指针
因为 name
是 char
的数组,name[0]
是 char
,而 &name[0]
是指向 char
的指针.所以你可以做 char *pt1 = &name[0];
.
如果你只使用name
,C会自动将其转换为指向其第一个元素的指针,所以你也可以这样做char *ptr1 = name;
。
char *pt1 = &name;
&name
是 char[10]
类型的地址,你需要 char (*pt1)[10]
来存储它。
也许你可以按照下面的方式做。
char *pt1 = &name[0]; //or char *pt1 = name;
在这种情况下 &name[0]
是类型 char *
。
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
.
因为 name
是 char
的数组,name[0]
是 char
,而 &name[0]
是指向 char
的指针.所以你可以做 char *pt1 = &name[0];
.
如果你只使用name
,C会自动将其转换为指向其第一个元素的指针,所以你也可以这样做char *ptr1 = name;
。
char *pt1 = &name;
&name
是 char[10]
类型的地址,你需要 char (*pt1)[10]
来存储它。
也许你可以按照下面的方式做。
char *pt1 = &name[0]; //or char *pt1 = name;
在这种情况下 &name[0]
是类型 char *
。