"char*string []"是否等同于C++中的"char**string"?

Deb*_*ger 1 c++ pointers char

char* string[]等同于char** string在C++?这两个声明之间到底有什么区别?在内存访问速度方面最好的声明是什么?

谢谢,

Ker*_* SB 10

char * s[]是一个指针数组.char ** s是指向指针的指针.数组与指针不同,所以两者不同.

(这真的,你可以经常将数组视为指向其第一个元素的指针,所以s[1][2]在两种情况下都可以这么说.)

请注意,char *s[]它本身并不实际有效.这是一个声明:

const char * s[] = { "hello", "world" };  // really `const char * s[2]`
Run Code Online (Sandbox Code Playgroud)

或者它是一个函数的参数,在这种情况下,它实际上等同于char**:

void foo(char * s[]); // same as `void foo(char ** s)`
Run Code Online (Sandbox Code Playgroud)