指针数组问题
#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;
}
这个程序为什么,函数部分的形参是用 char *p呢?不是应该是**p吗?应该怎么改才能正常运行呢?
[解决办法]
这段代码中声明char* str[20],明显有问题的,因为声明了一个数组指针,但是却没有分配空间,这显然是错误的。待观察题意,可以推断,char* str[20]估计是写错了,应该是char str[20].后面的代码不变,编译通过,而且结果正确。 在这里,假使char* str[20] 没有写错,首先要给他分配空间,但是此题目的仅仅是求一个字符串的长度,为何要千里迢迢设置一个char* str[20],多此一举,所以感觉是笔误。
[解决办法]
不需要用指针。