| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1735 人关注过本帖
标题:求助:关于数组长度
取消只看楼主 加入收藏
cordier
Rank: 2
等 级:论坛游民
威 望:1
帖 子:449
专家分:14
注 册:2006-2-9
结帖率:60%
收藏
 问题点数:0 回复次数:3 
求助:关于数组长度

#include <stdio.h>
main()
{
int n;
int aa[5]={1,2,3,4,5};
void fun(int aa[]);
n=sizeof(aa)/sizeof(aa[0]); /*数组的元素个数*/
printf("in main function:n=%d\n",n);

fun(aa);
getch();
}


void fun(int aa[])
{
int n;
n=sizeof(aa)/sizeof(aa[0]); /*数组的元素个数*/
printf("in fun function:n=%d\n",n);
}

因为以前有用类似的做法做过。
但是今天在函数体中运行,却不行,而在主函数中可以求得数组的长度
为什么?
是不是因为fun函数中,aa仅仅是一个指针,所以sizeof(aa)和sizeof(aa[0])是一样的,都等于2


如果我要在函数fun中计算出aa的长度,该用什么语句?
谢谢!!

搜索更多相关主题的帖子: 数组 长度 
2006-07-28 15:50
cordier
Rank: 2
等 级:论坛游民
威 望:1
帖 子:449
专家分:14
注 册:2006-2-9
收藏
得分:0 
那如果我想在函数体中
求数组的长度,该如何

2006-07-28 16:28
cordier
Rank: 2
等 级:论坛游民
威 望:1
帖 子:449
专家分:14
注 册:2006-2-9
收藏
得分:0 
谢谢
大家,看来只能在主函数里面先算出长度,再通过参数传递。

2006-07-29 08:30
cordier
Rank: 2
等 级:论坛游民
威 望:1
帖 子:449
专家分:14
注 册:2006-2-9
收藏
得分:0 
事情是这样的。
小弟我在做LU分解来解方程组比如:AX=b

为了使我写出来的函数具有通用性,当然矩阵A的行和列应当来说是可以变的(未知数的个数是可变的)。然而函数fun中要再申请一个与A同行同列的矩阵temp,由于二维矩阵的计算比一维的慢,并且二维数组的申请不方便(至少对于我这水平)。

所以改变一维的数组来表示A,此时,我们就会发现,你早请temp时,一定要知道A的长度。当然我们更想直接在函数fun中,直接计算算出A的数组元素个数,直接用,然而就出现以上这个问题。

如今,我是在main函数中计算出A的数组元素个数,然后在函数fun中加一个参数(这个参数就是数组元素个数)

对了,顺便问一下
二组数组如何申请,是用二维指针吗?
(具体写一段代码,申请三行两列的数组,谢谢)

2006-07-29 21:58
快速回复:求助:关于数组长度
数据加载中...
 
   



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

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