char *str[]={"djfk d"};
char **p;
p=str;
printf("%s/n",*p); -------->才可将字符串打印出来,以一维数组的思路想.
其实指针数组中的数字大小,并不是一个字符串可以有多长的字符,而是可以有多少个字符串,比如:*str[10]
就可以有十个字符串,
例子:
#include<stdio.h>
void main()
{
int length(char **p);
int len;
char *str[20]={"dfdfd","abc"};
len=length(str);
printf("the string has %d character",len);
}
int length(char **p)
{
int n=0;
while(*p!='/0')
{
n++;p++;
}
return n;
}
当p++,就已经指向下一个字符串了,所以结果为2
例子2:
#include<stdio.h>
void main()
{
int length(char *p);
int len;
char *str[20];
printf("please input a string/n");
scanf("%s",str);
len=length(str);
printf("the string has %d character",len);
}
int length(char *p)
{
int n;
n=0;
while(*p!='/0')
{
n++;p++;
}
return n;
}
像这样,实际,只是用str自己地址来赋值,所以这时候跟 str[20] 没有区别,这时它只相当于一级指针.