用指针函数编写一个函数

qq370409341 2012-07-18 04:19:31
#include <stdio.h>
int *sum(int a)
{
int i;
int s1=0,s2=0;
if(a%2==0)
{
for(i=2;i<=a;i=i+2)
s1+=1/i;
return &s1;
}
else
{
for(i=1;i<a;i=i+2)
s2+=1/i;
return &s2;
}
}
void main()
{
int n,;
scanf("%d",&n);
printf("%d",*sum(int n));//为啥这说错误C2198:“笔:太少的实际参数,不懂
}
而且还有好多错误不知道在哪里
...全文
297 21 打赏 收藏 转发到动态 举报
写回复
用AI写文章
21 条回复
切换为时间正序
请发表友善的回复…
发表回复
ignewbie 2012-07-28
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 的回复:]
int *sum(int a) 修改为
-------------
int sum(int a)

printf("%d",*sum(n)); 修改为
-----------------------
printf("%d",sum(n));

例子程序貌似和标题没有什么关系。如果想测试以下指针函数的使用,建议这样
typedef int (*FUNCPTR)(int);
voi……
[/Quote]
你这是函数指针了!
sangml 2012-07-28
  • 打赏
  • 举报
回复
用return 返回的地址在sum函数调用完成后,就释放了。
IT_Transformers 2012-07-28
  • 打赏
  • 举报
回复
个人感觉 错误 好多
不明白 lz 目的 int i;那么1/i=0; 没有 什么加的意义
还有 函数指针 返回类型
jiandingzhe 2012-07-28
  • 打赏
  • 举报
回复


int* XXXX() {
int s2;
return &s2;
}


铁定死了。
yanshikui 2012-07-24
  • 打赏
  • 举报
回复
//THE IMPLEMENTATION OF THE CLASS "LIST"
//FILE BILIST.CPP
#include "stdafx.h"

int *sum(int a);
int _tmain(int argc, _TCHAR* argv[])
{
int n;
scanf("%d",&n);
printf("%d",sum(n));
return 0;
}


int *sum(int a)
{
int i;
int s1=0,s2=0;
if(a%2==0)
{
for(i=2;i<=a;i=i+2)
s1+=1/i;
return &s1;
}
else
{
for(i=1;i<a;i=i+2)
s2+=1/i;
return &s2;
}
}

MFCANDPAI 2012-07-21
  • 打赏
  • 举报
回复
#include <stdio.h>
int *sum(int a)
{
int i;
int s1=0,s2=0;
if(a%2==0)
{
for(i=2;i<=a;i=i+2)
s1+=1/i;
return &s1;
}
else
{
for(i=1;i<a;i=i+2)
s2+=1/i;
return &s2;
}
}
void main()
{
int n;
scanf("%d",&n);
printf("%d",*sum(n));//为啥这说错误C2198:“笔:太少的实际参数,不懂
}

加了int就是新定义n,此n不同于上面那个n,所以错误
SKATE11 2012-07-20
  • 打赏
  • 举报
回复
int n,;这里多了个点
还有就是
printf("%d",*sum(int n));//为啥这说错误C2198:“笔:太少的实际参数,不懂
改为:printf("%d",*sum(n));
lming_08 2012-07-20
  • 打赏
  • 举报
回复
局部变量到块结束时自动销毁了,不能返回
pathuang68 2012-07-20
  • 打赏
  • 举报
回复
楼主给出的代码,问题很多,但都是十分基础的东西,建议还是先从最基本的书,比如C Primer Plus开始看吧。
manxiSafe 2012-07-20
  • 打赏
  • 举报
回复
[Quote=引用楼主 的回复:]
#include <stdio.h>
int *sum(int a)
{
int i;
int s1=0,s2=0;
if(a%2==0)
{
for(i=2;i<=a;i=i+2)
s1+=1/i;
return &s1;
}
else
{
for(i=1;i<a;i=i+2)
s2+=1/i;
return &s2;
}
}
void mai……
[/Quote] //return &s1;
不能返回一个地址,只能是返回指针类型
order_c 2012-07-18
  • 打赏
  • 举报
回复
调用函数后内存都释放了, 怎么访问?
木偶兄 2012-07-18
  • 打赏
  • 举报
回复
int *sum(int a)代表一个返回值为int*,参数为一个int的函数sum;
int* (*sum)(int a)这样才是代表一个返回值为int*,参数为int的函数指针类型sum
DataChat.Club 2012-07-18
  • 打赏
  • 举报
回复
s1+=1/i;//这儿是干嘛的?

1/2 = 0; 1/3 = 0; 1/4 = 0...
DataChat.Club 2012-07-18
  • 打赏
  • 举报
回复
函数的返回值是应该是int *型的,但你的返回的是int型。
彭家老三 2012-07-18
  • 打赏
  • 举报
回复
我擦,楼主你不要把一个临时变量的地址作为函数的返回值啊。函数结束的时候这个变量被释放了,你这样会有问题的。
彭家老三 2012-07-18
  • 打赏
  • 举报
回复
到底是指针函数还是函数指针?
qq370409341 2012-07-18
  • 打赏
  • 举报
回复
问题是题目要求用指针函数啊
wqkjj 2012-07-18
  • 打赏
  • 举报
回复
int *sum(int a) 修改为
-------------
int sum(int a)

printf("%d",*sum(n)); 修改为
-----------------------
printf("%d",sum(n));

例子程序貌似和标题没有什么关系。如果想测试以下指针函数的使用,建议这样
typedef int (*FUNCPTR)(int);
void main()
{
int n;
FUNCPTR func = sum;
scanf("%d",&n);
printf("%d",func(n));
}
qq370409341 2012-07-18
  • 打赏
  • 举报
回复
错误都改了 但是还是运行不了
#include <stdio.h>
int *sum(int a)
{
int i;
int s1=0,s2=0;
if(a%2==0)
{
for(i=2;i<=a;i=i+2)
s1+=1/i;
return s1;
}
else
{
for(i=1;i<a;i=i+2)
s2+=1/i;
return s2;
}
}
void main()
{
int n;
scanf("%d",&n);
printf("%d",*sum(n));
}
liaoqi127 2012-07-18
  • 打赏
  • 举报
回复
printf("%d",*(sum(n)));
加载更多回复(1)

70,037

社区成员

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

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