| 网站首页 | 业界新闻 | 群组 | 交易 | 人才 | 下载频道 | 博客 | 代码贴 | 编程论坛
共有 473 人关注过本帖
标题:函数里的数组咋传递
只看楼主 加入收藏
zhangst
Rank: 1
等 级:新手上路
帖 子:12
专家分:0
注 册:2018-10-11
结帖率:0
  已结贴   问题点数:10  回复次数:12   
函数里的数组咋传递
我怎么才能让feibo函数里的a数组传到sum函数里呀;调了半个小时了不知道指针咋用哪位大佬帮帮忙,谢谢。[
#include<stdio.h>
long int sum(long int n,long int k);
void feibo(long int k,long int m)
{
    long int i,a[10001]={0};
    for(i=0;i<k-1;i++){
        a[i]=0;
    }
    a[k-1]=1;
    for(i=k;i<=m;i++){
        a[i]=sum(i-k-1,i-1);
    }
    printf("%d\n",a[m]);
}
long int sum(long int n,long int k)
{   
    long int i,s=0,a[1001];
    for(i=n;i<=k+n;i++){
        s=s+a[i];
    }
    return s;
}

int main()
{
    long int k,m;
    scanf("%d %d",&k,&m);
    feibo(k,m);
    return 0;   
}
2018-10-12 20:44
吹水佬
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:169
帖 子:6385
专家分:28002
注 册:2014-5-20
  得分:3 
#include <stdio.h>

int fun(int a[])
{
    return a[1];
}

main()
{
    int a[10];
    a[1] = 123;
    printf("%d\n",fun(a));
}
2018-10-12 21:17
zhangst
Rank: 1
等 级:新手上路
帖 子:12
专家分:0
注 册:2018-10-11
  得分:0 
那我能不能在main函数里调出来我在自己函数里的到的整个数组
2018-10-13 10:09
吹水佬
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:169
帖 子:6385
专家分:28002
注 册:2014-5-20
  得分:0 
以下是引用zhangst在2018-10-13 10:09:58的发言:

那我能不能在main函数里调出来我在自己函数里的到的整个数组

通常如数组 a[10] 在函数里定义,函数过程结束返回后会被释放。
要想在调用函数的过程中获取被函数里创建数组数据,函数里可使用malloc()创建数组并将其地址返回。
示例:
#include <stdio.h>
#include <stdlib.h>

int *fun()
{
    int *a = (int *)malloc(10*sizeof(int));
    int i;
    for (i=0; i<10; ++i)
        a[i] = i;
    return a;
}

main()
{
    int *arr = fun();
    int i;
    for (i=0; i<10; ++i)
        printf("%d\n", arr[i]);
    free(arr);
}

[此贴子已经被作者于2018-10-13 15:29编辑过]

2018-10-13 15:24
no1xijin
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:江西
等 级:版主
威 望:19
帖 子:190
专家分:1126
注 册:2015-7-8
  得分:3 
回复 3楼 zhangst
简单粗暴的做法是定义一个全局数组变量,不用传递,直接使用
2018-10-13 15:26
吹水佬
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:169
帖 子:6385
专家分:28002
注 册:2014-5-20
  得分:0 
以下是引用no1xijin在2018-10-13 15:26:14的发言:

简单粗暴的做法是定义一个全局数组变量,不用传递,直接使用

这可能不能达到LZ的要求,LZ强调的是“在自己函数里的到的整个数组”
2018-10-13 15:31
no1xijin
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:江西
等 级:版主
威 望:19
帖 子:190
专家分:1126
注 册:2015-7-8
  得分:0 
回复 6楼 吹水佬
他要的貌似仅仅是数组内的内容,传递数组这个怕不是重点,并且他发的代码,两个子函数中都定义了数组a,这样再怎么传也达不到要求(传进来也会被屏蔽掉),除非删掉一个。
当然,把两个都删掉,然后定义一个全局数组变量,在两个子函数里直接使用,不用传递,简单粗暴。

以下代码仅说明:函数内定义的数组与传递的数组同名产生的问题。
程序代码:
#include <stdio.h>
int fun(int a[])
{
    int a[]={4,5,6};
    return a[1];
}

main()
{
    int a[10];
    a[1] = 123;
    printf("%d\n",fun(a));
}
2018-10-13 16:03
吹水佬
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:169
帖 子:6385
专家分:28002
注 册:2014-5-20
  得分:0 
回复 7楼 no1xijin
这个问题在2楼简单说了一下,LZ在3楼好象又有新的要求,才多说了两句。
2018-10-13 16:12
吹水佬
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:169
帖 子:6385
专家分:28002
注 册:2014-5-20
  得分:0 
如果相对固定的数组,用定义全局的也可以。
如果是动态的或临时的,就要动态分配并返回地址和大小。
2018-10-13 16:15
lxk1732942
Rank: 2
等 级:论坛游民
帖 子:155
专家分:91
注 册:2018-9-4
  得分:3 
数据只能由主调函数向被调函数单向传递,故在被调函数中定义的一切变量都无法将其值传递至主调函数,最多也就是在主调函数写一个赋值语句,将被调函数的返回值赋值给一个变量。但是被调函数可以对主调函数中变量的值作改变,因此,不如再定义一个长度相同的数组,并将原数组各值拷贝过去作为备份。然后再在被调函数中对备份数组进行处理。这样就相当于得到被调函数中的数组了。
新手一个,不知这样理解是否正确。
2018-10-13 20:17







关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.025979 second(s), 8 queries.
Copyright©2004-2018, BCCN.NET, All Rights Reserved