简体   繁体   English

如何使用指向指针的指针在 main 中返回?

[英]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. &namechar[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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM