这两个指针声明有什么区别?

Nik*_*ntz -4 c posix pipeline

这些声明是不同的还是产生相同的结果?

char * const *argv;
Run Code Online (Sandbox Code Playgroud)

const char **argv;
Run Code Online (Sandbox Code Playgroud)

是否存在差异或指针指针?

背景是我正在编写一个C命令行shell并将此结构用于命令:

struct command
{
    char * const *argv;
};
Run Code Online (Sandbox Code Playgroud)

上面的结构用于调用exec.现在,当我查看另一个问题时,结构是不同的:

用shell中的管道连接n个命令?

在那个问题中,实现相同的结构是不同的.

nal*_*zok 7

它们完全不同:

char *const *argv;声明"指向char的const指针";

const char **argv;声明"指向const char 指针的指针";

另外,char **const argv;声明" 指向char的指针的const指针".

要理解这些声明,请尝试"从里到外"阅读它们:http://c-faq.com/decl/cdecl1.html