C语言求数组函数有关问题
C语言求数组函数问题#includestdio.hint main(){int i[] {1, 1, 3, 4, 5}printf(lenth_a%i,lenth_i
C语言求数组函数问题
#include<stdio.h>
int main()
{
int i[] = {1, 1, 3, 4, 5};
printf("lenth_a=%i,lenth_i=%i", getLenth(i), sizeof(i)/sizeof(i[0]));
return 0;
}
int getLenth(int a[]) //实现得到数组的长度的函数
{
return sizeof(a);
}
C语言(
不是C++)难道不能实现这个功能吗?如果能,怎么实现呢?
[解决办法]int a[]会退化成指针的
[解决办法]一般求数组个数就用宏,
#define getLenth(i) sizeof(i)/sizeof(i[0])
[解决办法]C C++都是一样
实参要么是值要么是地址,数组名传到函数参数是一个指针,对32位地址永远都是4,所以不管你的数组a有多长,返回的都是4
[解决办法]顶`~
int getLenth(int a[]) //等同于 int getLenth(int* a)
{
return sizeof(a);
}
在做参数的时候`也仅仅在这个时候`数组等同于指针.