24小时热门版块排行榜    

查看: 835  |  回复: 4

hdy523331137

银虫 (小有名气)

[交流] 关于指针问题 已有4人参与

#include<stdio.h>
#include<stdlib.h>
main()
{void check(int *);
int *p1,i;
p1=(int *)malloc(5*sizeof(int));
for(i=0;i<5;i++)
scanf("%d",p1+i);
check(p1);
return 0;
}
void check(int *p)
{
int i;
for(i=0;i<5;i++)
if(*p<60)printf("%d",*p);}
这个程序怎么会报错呢?最后一行报错error C2100: illegal indirection
回复此楼

» 收录本帖的淘帖专辑推荐

问题

» 猜你喜欢

» 本主题相关价值贴推荐,对您同样有帮助:

已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

baobiao007

木虫 (职业作家)

中国特色


小木虫: 金币+0.5, 给个红包,谢谢回帖
应该是  check(&p1)
我同意叔本华的观点,人们投身艺术和科学领域的强烈愿望之一就是逃离痛苦、残酷和枯燥无味的现实生活,逃离自己飘忽不定的七情六欲的桎梏。--爱因斯坦
2楼2014-12-23 21:47:53
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

sxu2009

至尊木虫 (正式写手)


小木虫: 金币+0.5, 给个红包,谢谢回帖
程序没有什么大问题啊,是不是你输入测试数据时格式错了啊?(五个整数之间用空格隔开)。
另外,这个check也太没意思了,每次都输出第一个整数干什么啊?printf("%d ",*p)是不是改为printf("%d ",*p++)啊?
完整代码如下:
CODE:
#include<stdio.h>
#include<stdlib.h>
int main()
{
         void check(int *);
    int *p1,i;
    p1=(int *)malloc(5*sizeof(int));
    for(i=0;i<5;i++)
    scanf("%d",p1+i);
    check(p1);
    return 0;
}
void check(int *p)
{
    int i;
    for(i=0;i<5;i++)
            if(*p<60)
                    printf("%d ",*p++);
}

3楼2014-12-24 15:38:42
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

rbs

木虫 (小有名气)


小木虫: 金币+0.5, 给个红包,谢谢回帖
看起来没有错误。虽然这个程序没什么意义。
4楼2014-12-24 19:48:54
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

fmying

银虫 (小有名气)


小木虫: 金币+0.5, 给个红包,谢谢回帖
嗯,在我的linux机器上测试没问题,gcc 4.7.3
不过感觉奇怪的是:
1
scanf("%d",p1+i);
check(p1);

这两行,为什么每输入一个数组都要从头检查?

2
check中
for(i=0;i<5;i++)
if(*p<60)printf("%d",*p);}

i 在循环,但是指针p却并没有走,也就是检查5次第一个元素?
上善若水
5楼2014-12-25 15:46:42
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
相关版块跳转 我要订阅楼主 hdy523331137 的主题更新
普通表情 高级回复 (可上传附件)
信息提示
请填处理意见