[英]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 *
類型。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.