帮我看看我这新手写的代码

fansses 2002-06-26 09:53:33
#include <dos.h>
#include <iostream.h>

main()
{
int *p,*p1;
cin>>*p; cin>>*p1;
than(*p,*p1);//老说这错
}

int than(int *q,int *q1)
{
struct dostime_t t;
_dos_gettime(&t);

if (*q!=t.hour)
than(q,q1);
else
if (*q1!=t.minute)
{
than(q,q1);
cout<<"Time Is Over"<<endl;
}
return 0;
}
...全文
32 16 打赏 收藏 转发到动态 举报
写回复
用AI写文章
16 条回复
切换为时间正序
请发表友善的回复…
发表回复
fansses 2002-06-26
  • 打赏
  • 举报
回复
Up一下嘛
fansses 2002-06-26
  • 打赏
  • 举报
回复
可怕啊,,恐怖啊,,我把int than(int *q,int *q1)
{
struct dostime_t t;
_dos_gettime(&t);

if (*q!=t.hour)
than(q,q1);
else
if (*q1!=t.minute)
{
than(q,q1);
cout<<"Time Is Over"<<endl;
}
return 0;
} 


放在Main()的开头就没错了.只是为什么我编译出的EXE在输入第一个数时就出错?是不是得把TM这个结构体放在MAIN里申请,在用参数传给THAN好了?
fansses 2002-06-26
  • 打赏
  • 举报
回复
Error:run.cpp(15,7):Call to undefined function 'than'


如果我用than(p,p1);就出现上述问题

如果我用p=new int;p1=new int;他编译时的警告就少了一点,但还是在than上错
Sunnyiez 2002-06-26
  • 打赏
  • 举报
回复
分配什么内存啊,问你们,在写int *p ,int *pl 里难到没有分配内存,你们是堆用多了,不知道Auto变量了是吧!别误导人!!!
zhao_sh 2002-06-26
  • 打赏
  • 举报
回复
than(*p,*p1);是错误的,因为*p和*p1不是一个指针
所以要用:than(p,p1);
crystal_eyes 2002-06-26
  • 打赏
  • 举报
回复
傻眼了
than(p,pl);
这才对!
gogocat 2002-06-26
  • 打赏
  • 举报
回复
一个是上面说的应该先分配内存
p=new int;
pl=new int;

另外你的than函数要求是指向整型的指针,你应该这样调用你的函数

than(p,pl);//不要加前面的星号
zhao_sh 2002-06-26
  • 打赏
  • 举报
回复
than(*p,*p1);是错误的,因为*p和*p1不是一个指针
所以要用:than(p,p1);
crystal_eyes 2002-06-26
  • 打赏
  • 举报
回复
main()
{
int *p,*p1;

//指针要先分配内存才能使用!
p1 = malloc(sizeof(struct dostime_t);
p2 = malloc(sizeof(struct dostime_t);

cin>>*p; cin>>*p1;
than(*p,*p1);//这还能错?
}
zhao_sh 2002-06-26
  • 打赏
  • 举报
回复
你传的参数一正确,应如下传参数:
than(p,p1);
Sunnyiez 2002-06-26
  • 打赏
  • 举报
回复
应该写成
than(p,pl);
因为参数是指针类型!
wolaiye3 2002-06-26
  • 打赏
  • 举报
回复
同意!
Kaye 2002-06-26
  • 打赏
  • 举报
回复
int *p,*p1;
cin>>*p; cin>>*p1;
指针要先分配内存才能使用!
lonelyplanet 2002-06-26
  • 打赏
  • 举报
回复
1)To: fansses:

函数要先声明才能用否则就是“Call to undefined function 'than'”
声明的方法是把
int than(int *q,int *q1);
放在main之前,函数定义可以放在后面

1)To: Sunnyiez():
是指针就要先分配空间才能使用,这根auto不auto扯不上关系
fansses 2002-06-26
  • 打赏
  • 举报
回复
等了这么久,终于来了个点醒人的大侠
maphis 2002-06-26
  • 打赏
  • 举报
回复
放在前面当然就对了(只是编译通过)。因为C/C++是需要函数声明的。你没有在调用前声明当然就会出错,因为编译器找不到这个函数的参数类型。

如果你把than放到main前面,那么当你在main中调用than的话,编译器已经“看到”了该函数,所以就通过了。但是由于我们调用函数往往是互相嵌套的,例如:A调B,B调C而C又调A。碰到这种情况,我们就没有办法确定函数定义的位置了。幸好,C/C++编译器允许我们把函数的声明和实体分开来写。所以我们只需要在调用前先写一个函数的声明(函数原型),只要在任意地方由这个函数的实体,那么我们就能调用该函数。不用担心,编译器会帮我们找到这个函数的。这也就是.h(头文件)的由来。其中包括了大量函数声明。

所以,在你这个例子里,你可以这样:
int than(int *q,int *q1); //先声明该函数
int main()
{
.....
than(a,b); //调用
.....
}

int than(int *q,int *q1) //函数实体
{
.....
.....
}

这样就没问题了。
另外,我看了你的程序,我觉得有不少的问题,看来你对于C/C++编程还很不了解,我建议你先找一本关于C的书好好的看一看,然后再尝试着写一些简单的程序。

69,371

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧