您的位置:首页 > 其它

char **和char *[M]有什么区别?

2012-03-05 15:31 274 查看
原文链接在

在函数参数中,

extern int func(char **);




extern int func(char *[M]);


是代表不同含义的。

前者表示函数期望一个指针,该指针指向一块内存,该内存中包含N个指针,每个指针指向一块内存;这些指针指向的内存可能是连续的,也可能不连续,长度并且不一定相同;其中&a[0][0]和&[1][0]无关系,a[0]==a[0][0],如下例所示:

ptr ------> 0 [ptr] -------> "abcde"
1 [ptr] -------> "another string"
...
N [ptr] -------> "last string"


后者表示函数期望一个指针,该指针指向一块内存,该内存包含N*M个元素,其中(&a[0][0]+M)==&a[1][0]并且(void*)a[0][0]==(void*)a[0]

ptr ------> [0123456789...M][0123.........M]...[0123.........M]
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: