函数返回值的问题

yasmong 2003-10-30 07:50:49
sub(int *s)
{
static int t=0;
t=*s+t;
}
main()
{
int i,k;
for (i=0;i<4;i++)
{
k=sub(&i);
printf("%3d",k);
}
printf("\n");
}
请问,子函数的值是怎么返回到主函数中的啊?!
...全文
19 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
58946800 2003-10-31
  • 打赏
  • 举报
回复
同意完美飞人
Sodier 2003-10-31
  • 打赏
  • 举报
回复
#include<stdio.h>// 首先要有个头文件吧
sub(int *s)//默认为int类型返回
{
static int t=0;
t=*s+t;
return t;//要有个返回语句,除非返回类型声明为void.
}
main()
{
int i,k;
for (i=0;i<4;i++)
{
k=sub(&i);
printf("%3d",k);
}
printf("\n");
}
函数在调用它的函数里以栈的形式被保留地址,当被调函数执行完之后,
再回到调用它的函数的地址。
WYC2300 2003-10-30
  • 打赏
  • 举报
回复
从编译结果看是默认为t
Wolf0403 2003-10-30
  • 打赏
  • 举报
回复
猜谜语?无聊
li190 2003-10-30
  • 打赏
  • 举报
回复
#include<stdio.h>

int sub(int *s)//加上int
{
static int t=0;//你这句有何用?
t=*s+t;
return t;//加上这句
}
void main()
{
int i,k;
for (i=0;i<4;i++)
{
k=sub(&i);
printf("%3d",k);
}
printf("\n");
}
playboyxp 2003-10-30
  • 打赏
  • 举报
回复
你的程序有错
sub(int *s)
{
static int t=0;
t=*s+t;
return t;//少了这句
}
main()
{
int i,k;
for (i=0;i<4;i++)
{
k=sub(&i);
printf("%3d",k);
}
printf("\n");
}
behrman 2003-10-30
  • 打赏
  • 举报
回复
对,楼上的说的很对,不管你定义声明什么函数,要么是定义一种返回类型,要么是不返回的void型.
zhaochong12 2003-10-30
  • 打赏
  • 举报
回复
int sub(int *s) //如果返回int数的话,前边要加类型. 也可以用void无返回.
{
static int t=0;
t=*s+t;
return t; // 这里返回,用return 这样就会返回t
}
carbon107 2003-10-30
  • 打赏
  • 举报
回复
int sub(int *s)
{
static int t=0;
t=*s+t;
return t;
}
void main()
{
int i,k;
for (i=0;i<4;i++)
{
k=sub(&i);
printf("%3d",k);
}
printf("\n");
}
carbon107 2003-10-30
  • 打赏
  • 举报
回复
你编译没有错误吗
如果没有sub默认的就是int返回类型

69,372

社区成员

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

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