c - 如何在 main 中返回指针到指针的指针?

标签 c arguments program-entry-point free void

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] 。自 pt1char * ,您应该为其分配一个指向 char 的指针.

namechar 的数组, name[0]char ,和&name[0]是一个指向 char 的指针。所以你可以这样做char *pt1 = &name[0]; .

如果你只是使用name ,C 会自动将其转换为指向其第一个元素的指针,因此您也可以执行 char *ptr1 = name; .

关于c - 如何在 main 中返回指针到指针的指针?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58327748/

相关文章:

c - 在 C 中查找字符串中的最短前缀

C 字符数组作为指针

c - 如何使用数组的指针确定数组的长度?

c - 针对 x86 架构使用 gcc 编译器的双堆栈对齐问题

r - 将 "..."参数中的参数赋予 R 中的右侧函数

java - 将命令行参数传递给不可执行的jar文件中的特定** class **

c++ - 处理 main 中的可选参数

c++ - (C++) 字符串文字与参数列表不匹配

java - Java程序的执行从哪一行开始?它是主要方法吗?

c - void main() { } 无需头文件即可完美运行。怎么会这样,用C写的main函数的定义在哪里?