二维指针和二维数组有三种形式:
1,type **ptr
2,type* ptr[]或者type *prt[]
3,(type *)prt[]
三种形式意思相近,也有区别。首先三种形式都能表示二维的数据结构。
1,type **ptr:表示一个指向指针的指针
但是在一开始声明的时候(type **ptr),ptr到底指向几个指针是不知道的。只有在定义的时候(ptr = (type **)malloc(sizeof(type *[4]))才能确定。而且ptr本身是只占用一个指针的内存。这是和type* ptr[]最大的不同;
2,type* ptr[]:表示一个含有指向type类型的指针的数组,结构图和上面类似,但是在声明的时候,ptr本身就占用4个指针的数组(假如数组里含有4个指针)。
3,(type *)ptr[]:在定义后,ptr = (type(*)[5])malloc(sizeof(int(5*k))),ptr表示k个指针,每个指针都指向一个含有5个type类型元素的数组。ptr本身占用的内存只是一个指针的内存。