august 发表于 2007-9-5 23:17:28

指针数组问题

#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吗?

coolpay64 发表于 2007-9-6 08:56:58

沒錯!august君說得對!這個程序是譯不到的!
正常來說 char *str; -> char str;
指明str昰一個char*(字串),並預先為他預留20個byte
char *str是二級沒錯
就是建立20個 char*的意思。。。

august 发表于 2007-9-6 12:36:29

#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;
}
但为什么这样又不能正确运行呢?

coolpay64 发表于 2007-9-6 14:28:24

scanf("%s",str); 再一次說,%s要求的資料是char*
LZ給一個char**會掛掉是正常的
页: [1]
查看完整版本: 指针数组问题