入门客AI创业平台(我带你入门,你带我飞行)
博文笔记

C语言 java 获取一维数组长度

创建时间:2017-09-23 投稿人: 浏览次数:124

C语言中要获取以为数组唱得好有点难度的。因为数组每元素的类型相同,每个元素占用的字节数都一样。这样就可以通过sizeof运算符,先获取整个数组占用的字节数,然后再除以每个数组元素占用的字节数就可以计算出数组的长度

#include<stdio.h>
int length(int arr[]);
//通过带参宏获取一维数组长度
#define GET_ARRAY_LENGTH(array,len){len = (sizeof(array) / sizeof(array[0]));}
void main()
{
    int array[]={1,2,3,4,5,6};
//  直接计算数组长度
    printf("数组长度为:%d
",sizeof(array)/sizeof(int));
    printf("数组长度为:%d
",length(array));
    int len;
    GET_ARRAY_LENGTH(array,len);//启用宏把数组长度放到变量len中
    printf("数组长度为:%d
",len);
    int array2[][]={}
}
//求数组的长度
int length(int arr[])//这个方法行不通的
{
////计算占用内存大小
//sizeof(array)
//
////计算数组元素个数
//sizeof(array) / sizeof(array[0])

    return sizeof(arr)/sizeof(int);//结果永远为1
    //arr是函数参数,到了本函数中,arr只是一个指针
    //(地址,系统在本函数运行时,是不知道a所表示的地址有多大的数据存储空间,
    //这里只是告诉函数:一个数据存储空间首地址),
    //所以,sizoef(a)的结果是指针变量a占内存的大小,
    //一般在64位机上是4个字节。
    //a[0]是int类型,sizeof(a[0])也是4个字节,所以,结果永远是1。
}

结果:


数组长度为:6
数组长度为:1
数组长度为:6


声明:该文观点仅代表作者本人,入门客AI创业平台信息发布平台仅提供信息存储空间服务,如有疑问请联系rumenke@qq.com。