幻想森林

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 2307|回复: 3

[通用编程] 指针数组问题

[复制链接]

313

主题

1574

帖子

1万

积分

⑧专业

*永恒国度*

积分
14145
QQ
发表于 2007-9-5 23:17:28 | 显示全部楼层 |阅读模式
#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吗?
[img][/img] http://shop33698673.taobao.com被别人嫉妒,证明你优秀,嫉妒别人说明你无能
回复

使用道具 举报

19

主题

842

帖子

1万

积分

⑧专业

絕望青年,一起增高吧

积分
13676
发表于 2007-9-6 08:56:58 | 显示全部楼层
沒錯!august君說得對!這個程序是譯不到的!
正常來說 char *str[20]; -> char str[20];
指明str昰一個char*(字串),並預先為他預留20個byte
char *str[20]是二級沒錯
就是建立20個 char*的意思。。。

為著彼岸,便要與之妥協 但為著彼岸,更不能與之妥協

回复 支持 反对

使用道具 举报

313

主题

1574

帖子

1万

积分

⑧专业

*永恒国度*

积分
14145
QQ
 楼主| 发表于 2007-9-6 12:36:29 | 显示全部楼层
#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;
}
但为什么这样又不能正确运行呢?
[img][/img] http://shop33698673.taobao.com被别人嫉妒,证明你优秀,嫉妒别人说明你无能
回复 支持 反对

使用道具 举报

19

主题

842

帖子

1万

积分

⑧专业

絕望青年,一起增高吧

积分
13676
发表于 2007-9-6 14:28:24 | 显示全部楼层
scanf("%s",str); 再一次說,%s要求的資料是char*
LZ給一個char**會掛掉是正常的

為著彼岸,便要與之妥協 但為著彼岸,更不能與之妥協

回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|小黑屋|幻想森林

GMT+8, 2024-5-2 16:34 , Processed in 0.031032 second(s), 21 queries .

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表