黑马程序员技术交流社区
标题:
c语言 想定义一个关于计算数组长度的函数...
[打印本页]
作者:
桑托尔
时间:
2014-4-20 09:24
标题:
c语言 想定义一个关于计算数组长度的函数...
本帖最后由 桑托尔 于 2014-4-20 19:28 编辑
int SizeOfArray(int a[])
{
return sizeof(a)/sizeof(int));
}
我自己这样编写的,但是不知道为毛返回值永远是1。
貌似这里面的“sizeof(a)”算的不是整个数组的长度,而算的形参的长度。
于是不知道解决方法了{:3_48:}{:3_48:}
求解答,谢谢!!
作者:
微尘•逐梦
时间:
2014-4-20 10:22
你这样写sizeof(a)会计算a的指针长度,而不是数组长度,可以用一下方法计算数组长度
int array_len(int *s)
{
int len = 0;
for (int i=0; (*(s +i))!='\0'; i++) {
len++;
}
return len;
}
复制代码
作者:
星河鹭起
时间:
2014-4-20 10:55
你这个计算的是指针的长度,因为当数组当作实参使用的时候,传递的是数组名,相当于指针,永远都是8字节。如果想计算长度,可以将数组内容遍历出来,然后再长度每次递增1,就像楼上所说的。
作者:
星河鹭起
时间:
2014-4-20 14:03
马凯文 发表于 2014-4-20 13:45
这个我尝试了下,没有写出来,最好的情况是输出能正确,但是一旦数组定义为 int array[20] ...就不行了, ...
我还没有学到宏定义,还在结构体阶段。所以宏定义这个还是看不懂:D
作者:
星河鹭起
时间:
2014-4-20 14:08
马凯文 发表于 2014-4-20 13:45
这个我尝试了下,没有写出来,最好的情况是输出能正确,但是一旦数组定义为 int array[20] ...就不行了, ...
#include <stdio.h>
int array_len(char *s)
{
int len = 0;
for (int i=0; (*(s +i))!='\0'; i++) {
len++;
}
return len;
}
int main()
{
char a[20]="abcdefg";
int count = array_len(a);
printf("%d\n",count);
return 0;
}
这个代码能够正确求出字符数组的长度,参考了1楼的
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2