[英]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
is an array of 10 char
, which is a char [10]
. name
是 10 个char
的数组,它是一个char [10]
。 So &name
is a pointer to an array of char
, which is a char (*)[10]
.所以&name
是一个指向char
数组的指针,它是一个char (*)[10]
。 Since pt1
is a char *
, you should assign to it a pointer to a char
.由于pt1
是一个char *
,您应该为其分配一个指向char
的指针。
Since name
is an array of char
, name[0]
is a char
, and &name[0]
is a pointer to a char
.因为name
是一个char
数组,所以name[0]
是一个char
,而&name[0]
是一个指向char
的指针。 So you can do char *pt1 = &name[0];
所以你可以做char *pt1 = &name[0];
. .
If you just use name
, C will automatically convert it to a pointer to its first element, so you can also do char *ptr1 = name;
如果只使用name
, C 会自动将其转换为指向其第一个元素的指针,因此您也可以执行char *ptr1 = name;
. .
char *pt1 = &name;
&name
is address of type char[10]
you need char (*pt1)[10]
to store it. &name
是char[10]
类型的地址,您需要char (*pt1)[10]
来存储它。
Perhaps you can do as below.也许你可以做如下。
char *pt1 = &name[0]; //or char *pt1 = name;
in this case &name[0]
is of type char *
.在这种情况下&name[0]
是char *
类型。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.