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]
. So &name
is a pointer to an array of char
, which is a char (*)[10]
. Since pt1
is a char *
, you should assign to it a pointer to a char
.
Since name
is an array of char
, name[0]
is a char
, and &name[0]
is a pointer to a char
. So you can do 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;
.