怎么将数组作为参数传入

柯-南 2014-02-20 03:51:08
我想编写一个函数,实现求一个数组的和。
自己尝试代码如下:
#include<stdio.h>
int sum(int *p){
int len=sizeof(p)/sizeof(int);
int s=0;
int i;
for(i=0;i<len;i++){
s+=*(p+i);
}
return s;
}
void main()
{
int array[]={1,2,3,4};
printf("%d\n",sum(array)));
}

结果只有数组第一个数传进去了。
求解!
...全文
548 16 打赏 收藏 转发到动态 举报
写回复
用AI写文章
16 条回复
切换为时间正序
请发表友善的回复…
发表回复
柯-南 2014-02-27
  • 打赏
  • 举报
回复
谢谢大家的耐心解答
柯-南 2014-02-27
  • 打赏
  • 举报
回复
引用 1 楼 adlay 的回复:

#include<stdio.h>
int sum(int *p, int len){
    int s=0;
    int i;
    for(i=0;i<len;i++){
        s+=*(p+i);
    }
    return s;
}
void main()
{
    int array[]={1,2,3,4};
    printf("%d\n",sum(array, sizeof(p)/sizeof(int))));
}
你好,不好意思 最近没上网 所以没及时回复 谢谢你
twhold 2014-02-20
  • 打赏
  • 举报
回复
核心上面说了,就是 数组作为表达式的时候是就是一个指针
Beinggeek 2014-02-20
  • 打赏
  • 举报
回复
引用 1 楼 adlay 的回复:

#include<stdio.h>
int sum(int *p, int len){
    int s=0;
    int i;
    for(i=0;i<len;i++){
        s+=*(p+i);
    }
    return s;
}
void main()
{
    int array[]={1,2,3,4};
    printf("%d\n",sum(array, sizeof(p)/sizeof(int))));
}
sizeof(array)/sizeof(int)
虚幻专家 2014-02-20
  • 打赏
  • 举报
回复
#include<stdio.h> int sum(int *p, int len) { int s = 0
luofuwen1004 2014-02-20
  • 打赏
  • 举报
回复
添加一个行参,作为数组的长度
missheaven2011 2014-02-20
  • 打赏
  • 举报
回复
再加一个入参,把长度也传进去
mujiok2003 2014-02-20
  • 打赏
  • 举报
回复
另一个方案:

int sum(int* beg, int* end);
「已注销」 2014-02-20
  • 打赏
  • 举报
回复
参考二楼写法,增加一个形参用来记录数组的大小
「已注销」 2014-02-20
  • 打赏
  • 举报
回复
int len=sizeof(p)/sizeof(int); sizeof(p)有问题;
赵4老师 2014-02-20
  • 打赏
  • 举报
回复
怎么将整个互联网内容作为参数传入?!
zhuobattle 2014-02-20
  • 打赏
  • 举报
回复
指针,数组做为形参时,都会变成一个指针,sizeof就是指针的大小,32位程序为4. 所以就只有一个元素了,数组长度你可以做为参数传递进去
max_min_ 2014-02-20
  • 打赏
  • 举报
回复
当数组作为函数的参数的形式传递的时候,它和指针是一样的! 所以直接用sizeof的话,它的大小是固定的!
afreet2006 2014-02-20
  • 打赏
  • 举报
回复
int sum(int *p) 这样定义,函数中处理的只是一个指针类型,因此int len=sizeof(p)/sizeof(int); 指针的长度为4,int的长度也为4,所以获取的长度是1,结果也就只处理array中的一个元素了
starytx 2014-02-20
  • 打赏
  • 举报
回复
需加一个数组长度参数信息进去,你那样求数组长度是不行的。
www_adintr_com 2014-02-20
  • 打赏
  • 举报
回复

#include<stdio.h>
int sum(int *p, int len){
    int s=0;
    int i;
    for(i=0;i<len;i++){
        s+=*(p+i);
    }
    return s;
}
void main()
{
    int array[]={1,2,3,4};
    printf("%d\n",sum(array, sizeof(p)/sizeof(int))));
}

69,382

社区成员

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

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