C语言二级指针跟二维数组问题。

这样定义一个二维数组(或者说二级指针)
char *(p[])={"32143","34123","2134","3434","24531"};
怎么样通过数组名p获取这个二维数组中一维数组的数目、这里是5。
换个说法,怎么样通过指针名p获取二级指针中一级指针的数目。。

定义了一个Max_Size表示数组最大长度,要不然我没想到搞定的方法
#include "stdio.h"
int main()
{
int count =0;
char *(p[Max_Size])={"32143","34123","2134","3434","24531"};

while(p[count] !=NULL)
{
printf("%s\n",p[i]);
count++;
}
printf("%d",count);
return 0;
}
温馨提示:答案为网友推荐,仅供参考
第1个回答  2011-10-22
sizeof(p)/sizeof(char *)

sizeof(p)/sizeof(*p)追问

你这个方法我用过确实可以。
如果在定义数组的下方判断可以判断的出来。但是如果把p作为实参传递给形参为char** pp的函数。在函数里面就判断不了他长度。。
如果直接sizeof(pp)值为4,因为指向数组的第一个以为数组。长度为4。为什么的。

追答

你的变量pp是一个二级指针,二级指针站的字节数当然是4个字节咯,指针和数组名是有区别的

追问

主要是在这里面。怎么判断这个二位指针pp指向的二位数组长度。

第2个回答  2011-10-24
*(p+i) or p[i] 指向第i-1个串,然后用p[i][j] i 和 j 分别表示第i-1个串、这个串中第j-1个元素
或用*(*(p+1)+3)= '2' ,表示p[2][3].
第3个回答  2011-10-23
void **p
void *p1=*p
int length
while (p1 != NULL)
{
p1++;
length++
}

length
相似回答