char **和char *[M]有什么区别?
2012-03-05 15:31
274 查看
原文链接在此
在函数参数中,
和
是代表不同含义的。
前者表示函数期望一个指针,该指针指向一块内存,该内存中包含N个指针,每个指针指向一块内存;这些指针指向的内存可能是连续的,也可能不连续,长度并且不一定相同;其中&a[0][0]和&[1][0]无关系,a[0]==a[0][0],如下例所示:
后者表示函数期望一个指针,该指针指向一块内存,该内存包含N*M个元素,其中(&a[0][0]+M)==&a[1][0]并且(void*)a[0][0]==(void*)a[0]
在函数参数中,
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]
相关文章推荐
- char [] 和char * 之间有什么区别?
- char *与char []的区别
- char varchar nchar nvarchar 四者的区别是什么(为何SQL Server自动给字符串末尾加空格)
- C语言中char * 和 char []的区别
- C++中char * 和char []的区别
- 深入分析C++中char * 和char []的区别
- SQL中varchar,char,nvarchar有什么区别
- char(10)和VARCHAR(10)主要的区别是什么?
- char varchar nchar nvarchar 四者的区别是什么(为何SQL Server自动给字符串末尾加空格)
- [转载]char * 和char []的区别---之第二篇
- char * 与 char [] 区别,char *[] 与 char[][]区别。字符串指针的数组与二维char数组区别。字符串常量赋予指针与字符数组区别。"字符串"等价于其首元素"字"的地址
- c++ char *和char []的区别
- 深入分析C++中char * 和char []的区别
- char * 和 char []的区别
- Mysql中char和varchar有什么区别
- 深入分析C++中char * 和char []的区别
- 深入分析C++中char * 和char []的区别
- 深入分析C++中char * 和char []的区别
- 深入分析C++中char * 和char []的区别
- [转]深入分析C++中char * 和char []的区别