当前位置: 代码迷 >> C语言 >> 如何统计数组的长度。。
  详细解决方案

如何统计数组的长度。。

热度:172   发布时间:2007-11-20 13:55:22.0
如何统计数组的长度。。
void add(unsigned int *R1,unsigned int *R2,unsigned int *R_add)
{
int i,h=0,t=0,
for(i=0;R1[i]!='\0';i++)
h++;//统计两个加数由多少个无符号整型组成
for(i=0;R2[i]!='\0';i++)
t++;//统计两个加数由多少个无符号整型组成
......
......

}
我现在想得到R1和R2的长度,用上面的方法,不能得到正确的结果。。。
谁能给我出出主意啊
搜索更多相关的解决方案: 长度  统计  

----------------解决方案--------------------------------------------------------
你的程序只对字符数组有用```

如果是这个数组: A[]={123,456,789}

里面可是没有'\0'``

我的意见是sizeof(A)(貌似写错了``但是就是这个意思)/sizeof(数组类型)


----------------解决方案--------------------------------------------------------
int i,h=0,t=0, //
for(i=0; R1[i] != '\0';i++)
h++;
for(i=0; R2[i] != '\0'; i++)
t++;


这个只对字符串有效。

///////////////////////////////////

数组的长度程序中是已经确定的。

如:

int ar[5]; // 这个就5个元素,已经知道了的。



[此贴子已经被作者于2007-11-20 15:20:09编辑过]


----------------解决方案--------------------------------------------------------

LZ是对的 


----------------解决方案--------------------------------------------------------
sizeof
也不能写进函数。

只能

int ar[5];
printf("%u", sizeof ar); // 这样才能得到数组 ar 的大小(以字节计)

//------------------

void size(int * p)
{
printf("%u", sizeof p);
// 这样打印的只能是 指针的大小(32 位系统为 4字节)
}

int ar[5];


----------------解决方案--------------------------------------------------------
得到字符串的长度是可以的。
得到 unsigned int 数组的长度是不可能的。(无法统计)

// 数组长度怎么可能会不知道呢

#include <stdio.h>
#include <stdlib.h>

int main(void)
{
int ar1[5]; // 5
int ar2[10]; // 10
int * ar3 = (int *)malloc(sizeof(int) * 9); // 9

return 0;
}


----------------解决方案--------------------------------------------------------
以下是引用死了都要C在2007-11-20 15:05:00的发言:
你的程序只对字符数组有用```

如果是这个数组: A[]={123,456,789}

里面可是没有'\0'``

我的意见是sizeof(A)(貌似写错了``但是就是这个意思)/sizeof(数组类型)
//这种只对A[]={...}有用,如果是A[MAX].你的还奏效吗?



----------------解决方案--------------------------------------------------------

以下是引用cosdos在2007-11-20 15:26:58的发言:
sizeof
也不能写进函数。

只能

int ar[5];
printf("%u", sizeof ar); // 这样才能得到数组 ar 的大小(以字节计)

//------------------

void size(int * p)
{
printf("%u", sizeof p);
// 这样打印的只能是 指针的大小(32 位系统为 4字节)
}

int ar[5];

不是不能写进函数,而是两个测试的类型就不同,一个是数组,一个是地址.因为数组参数传递过去就是一个地址.
就是说是不能测试传递过来的数组大小,因为这个参数是没有具体大小而言的.


----------------解决方案--------------------------------------------------------

我说的不太好,

//--------------------------------//
void size(int * p)
{
printf("%u", sizeof p);
// 打印的将是 sizeof(int *)
}


----------------解决方案--------------------------------------------------------
打印的本来就是sizeof(int *);因为这里p 仅仅是一个地址.

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