指针数组问题
#include<stdio.h>void main()
{
int length(char *p);
int len;
char *str;
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吗? 沒錯!august君說得對!這個程序是譯不到的!
正常來說 char *str; -> char str;
指明str昰一個char*(字串),並預先為他預留20個byte
char *str是二級沒錯
就是建立20個 char*的意思。。。 #include<stdio.h>
void main()
{
int length(char **p);
int len;
char *str;
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;
}
但为什么这样又不能正确运行呢? scanf("%s",str); 再一次說,%s要求的資料是char*
LZ給一個char**會掛掉是正常的
页:
[1]