返回信息流我想计算一下数组的长度,通过函数的方式,不过,传入到函数中计算出来的数组长度和在主函数中直接计算的结果不一样,感觉是把数组之外的元素也传入了进去,没太理解,想问下大家。
程序源码:
#include<stdio.h>
int array_length(int *Array);
int main()
{
int a[]={31,41,59,26,41,58};
int i=0;
for(i=0;i<6;i++)
{
printf("a[%d]=%d\n",i+1,a[i]);
}
printf("\n");
// printf("%d\n",sizeof(a)/sizeof(a[0]));
printf("\n\narrary length is %d",array_length(a));
}
int array_length(int *Array)
{
// return sizeof(Array)/sizeof(*Array);
int i=0;
while(*Array!='\0')
{
printf("a[%d]=%d\n",i,*Array);
i++;
Array++;
}
return i;
}
输出结果:
a[1]=31
a[2]=41
a[3]=59
a[4]=26
a[5]=41
a[6]=58
//以上是主函数输出
a[0]=31
a[1]=41
a[2]=59
a[3]=26
a[4]=41
a[5]=58
a[6]=6
a[7]=134513936
//以上是array_length输出,其中我感觉a[6]是实际的数组长度,不知道为什么也成为了数组的一部分,传入到了函数中...
这是一条镜像帖。来源:北邮人论坛 / cpp / #32559同步于 2009/12/2
该镜像源已超过 30 天没有更新,可能在源站已被删除。
CPP机器人发帖
一个关于C中数组长度的问题
lixinyu2268
2009/12/2镜像同步5 回复
订阅后,新回复会通过你的通知中心匿名送达。
5 条回复
【 在 lixinyu2268 的大作中提到: 】
: 囧...那判断数组结束的方法应该是什么呢?
这是不可能的事情
数组都是静态的 貌似gcc现在可以声明动态数组?但不管怎样,数组长度是无法在运行中动态获得的
也就是说数组长度都是固定的,不存在计算长度这么一说
呵呵,原来如此,谢谢!
【 在 jmpesp 的大作中提到: 】
: 这是不可能的事情
: 数组都是静态的 貌似gcc现在可以声明动态数组?但不管怎样,数组长度是无法在运行中动态获得的
: 也就是说数组长度都是固定的,不存在计算长度这么一说