首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

C语言求数组函数有关问题

2012-12-30 
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 a[]会退化成指针的

一般求数组个数就用宏,
#define getLenth(i) sizeof(i)/sizeof(i[0])

顶`~



int getLenth(int a[]) //等同于 int getLenth(int* a)
{
    return sizeof(a);
}


在做参数的时候`也仅仅在这个时候`数组等同于指针.

热点排行