char* string[]
是否等同于C++中的char** string
?这两个声明到底有什么不同?在内存访问速度方面,最好的声明是什么?
谢谢,
发布于 2011-11-04 14:59:58
char * s[]
是一个指针数组。char ** s
是指向指针的指针。数组和指针不一样,所以两者是不同的。
(事实是,您通常可以将数组视为指向其第一个元素的指针,因此在这两种情况下都可以使用s[1][2]
。)
请注意,char *s[]
本身实际上并不有效。它要么是一个声明:
const char * s[] = { "hello", "world" }; // really `const char * s[2]`
或者它是一个函数参数,在这种情况下,它实际上与char**
相同
void foo(char * s[]); // same as `void foo(char ** s)`
发布于 2011-11-04 15:02:16
char* string[]
可以衰减为char** string
,例如,当通过值作为参数传递或通过值从函数返回时
这两者并不完全相同
发布于 2011-11-04 15:02:25
它们是不同的,然而,在大多数情况下,数组会衰减为指针(例如,当通过值作为参数传递给函数时)。因此,在这种情况下,完全可以在上面添加一个索引,然后就到此为止。
https://stackoverflow.com/questions/8011232
复制