是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)