| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 457 人关注过本帖
标题:关于求数组长度
只看楼主 加入收藏
初级学子
Rank: 1
来 自:山东青岛
等 级:新手上路
帖 子:3
专家分:7
注 册:2013-5-30
结帖率:100%
收藏
已结贴  问题点数:20 回复次数:5 
关于求数组长度
先看两个小程序:
第一个如下:
#include <stdio.h>
void main()
{
    float a[6]={1,2,3,4,5,6};
    int b;
    b=sizeof(a)/sizeof(a[0]);
    printf("%d\n",b);
}
第二个如下:
#include <stdio.h>
int getlength(float *a)
{
    int length;
    if(a==NULL)
        return 0;
    length=sizeof(a)/sizeof(a[0]);
    return length;
}
void main()
{
    float a[6]={1,2,3,4,5,6};
    int b;
    b=getlength(a);
    printf("%d\n",b);
}
对于第一个程序输出结果为6,第二个输出为1,也就是说用sizeof(a)/sizeof(a[0])来求数组的长度时,在主函数中可以,而如果把a当一个参数传到一个函数中求出的结果永远是1。我在网上查了一下,说把一个数组a当参数传到一个函数里面之后,它就变成一个指针了,不再具有数组的特性。现在我要编辑一个函数:float *GetAmplsOfATrc(float *trcData)  {...}   trcData是一个数组名,由外界传进来,现在在这个函数里我不仅要读取trcData的数据,还需要定义一些和trcData长度相同的一些数组,因此需要求trcData的长度。用上面第二个程序中的方法来求显然是错的,那么这个问题该怎么解决?求各路大神解答
2015-11-29 21:41
TonyDeng
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:304
帖 子:25859
专家分:48889
注 册:2011-6-22
收藏
得分:5 
在上层把数组的长度作为参数传入下层函数。

授人以渔,不授人以鱼。
2015-11-29 21:54
追公交的少年
Rank: 2
等 级:论坛游民
帖 子:29
专家分:20
注 册:2015-11-26
收藏
得分:10 
:float *GetAmplsOfATrc(float *trcData)  {...}   trcData是一个数组名,由外界传进来,现在在这个函数里我不仅要读取trcData的数据,还需要定义一些和trcData长度相同的一些数组,因此需要求trcData的长度。

你上面这句话,是说定义一个返回指针的函数,然后形参是指针,调用的时候,给的实参是数组名,然后那个函数里面需要读出实参传来的数组里面的数据,并且在函数里面还要定义一些和实参传来的数组一样长度的数组是吗?
形参得到的也只是数组的首地址,读里面数据你可以*(a+i),这个和a[i]等价,至于,数组的长度,我还真不知道这样怎么求得。。
这个既然是定义的函数,是把数组当做实参,就一定知道了数组的长度了啊,不是动态的,数组在定义的时候一定要给出长度。可以把长度也当成实参传下去啊。不知道长度,在输出数组数据也不知道什么时候结束输出。
恩,我觉得应该只能这么做,把长度给传给形参。
2015-11-30 01:41
初级学子
Rank: 1
来 自:山东青岛
等 级:新手上路
帖 子:3
专家分:7
注 册:2013-5-30
收藏
得分:0 
回复 3楼 追公交的少年
上面那句话就是你说的那个意思。现在我只是做程序的一部分,别人给的接口就一个数组名,没提供数组长度,所以很头疼啊。
2015-11-30 08:16
embed_xuel
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
等 级:贵宾
威 望:58
帖 子:3845
专家分:11385
注 册:2011-9-13
收藏
得分:5 
如果是字符数组,还可以用strlen求出长度。如果不是,那上层就是在耍流氓了......

总有那身价贱的人给作业贴回复完整的代码
2015-11-30 08:24
TonyDeng
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:304
帖 子:25859
专家分:48889
注 册:2011-6-22
收藏
得分:0 
以下是引用embed_xuel在2015-11-30 08:24:22的发言:

如果是字符数组,还可以用strlen求出长度。如果不是,那上层就是在耍流氓了......

即使是cz数组,下层不知道边界,仍然是可能越界的。

[此贴子已经被作者于2015-11-30 10:09编辑过]


授人以渔,不授人以鱼。
2015-11-30 10:08
快速回复:关于求数组长度
数据加载中...
 
   



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

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