当前位置: 代码迷 >> C语言 >> 求助:关于数组长度
  详细解决方案

求助:关于数组长度

热度:149   发布时间:2006-07-28 23:01:34.0
我也不大清楚,不过我觉得16位的应该和32位的不同,16位的编译器象TC等我好久没用了。

哦对了,还有我刚刚才看到的,这个循环是这样的,可能我写得太紧凑了:

for (int len=0; *aa; aa++, ++len); //len是用来计数的,条件判断 *aa 为真(非NULL)时,指针aa移动,len加一,
//直到 *aa == '\0' 为止。注意循环后面有个分号!
----------------解决方案--------------------------------------------------------
[QUOTE]int aa[5]={1,2,3,4,5};[/QUOTE]
..后面的'\0'怎么来啊..我就是在这没看明白

你把他当做char了吧..

还有.我认为楼主的问题暂时是没办法解决的.可能C++会好点

C的方法总之我还没有想到.求长度这件事你应该在定义数组的函数里办了他


----------------解决方案--------------------------------------------------------
咦,对啊,偶怎么搞的,以为是字符串了
----------------解决方案--------------------------------------------------------
那没办法,只能靠参数传递了。
----------------解决方案--------------------------------------------------------
谢谢
大家,看来只能在主函数里面先算出长度,再通过参数传递。
----------------解决方案--------------------------------------------------------

也不是完全没有法子.拿结构体

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

}

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


----------------解决方案--------------------------------------------------------
sizeof是编译时运算符,

n=sizeof(aa)/sizeof(aa[0]);采用这种方式得到数组长度不外:
1.这个数组可能在写程式的初期调试中,设计者会随时改变其长度
2.懒惰,懒得回头查,把这个工作丢给编译器.如果是这样,打PP
3.还有什么理由想不起来
----------------解决方案--------------------------------------------------------
事情是这样的。
小弟我在做LU分解来解方程组比如:AX=b

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

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

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

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

----------------解决方案--------------------------------------------------------
  相关解决方案