• C语言--数组的长度计算【详细解释】



     一.数组的长度计算公式

    我们都知道字符串有特定的函数strlen,而数组没有,(虽然字符串也是一种特殊的数组)

    但是,类似于这样的数组:

    int arr[]={12,89,1,5,31,78,45,12,12,0,45,142,21,12};

    我们很难一眼就看出来数组的长度。所以我们需要一个公式。

    先看一下这个小学题目:一个苹果5元,小明有20元,问他能买几个苹果?

    很容易:20除以5==4(个)

    同样类比到这里,当我们知道数组的总大小,再除以单个元素的大小,不就得到了数组的个数了。

    公式:sizeof(arr)/sizeof(arr[0]); 


    二.例子

    1. int main()
    2. {
    3. int arr[] = { 12,89,1,5,31,78,45,12,12,0,45,142,21,12 };
    4. int len = sizeof(arr) / sizeof(arr[0]);
    5. printf("数组的长度是%d", len);
    6. return 0;
    7. }


     三.在函数中如何计算数组的长度

    这个公式是不可以在函数中使用的,因为数组传参的时候传的是首元素的地址,因此不可以使用。那我们在函数中传数组,必须要传递两个东西:

    1.数组的首元素地址

    2.数组的长度

     下面通过一个代码看一下区别

    1. void test(int arr[])
    2. {
    3. int len = sizeof(arr) / sizeof(int);//2,x64的指针是8个字节
    4. printf("函数中的数组长度%d\n", len);
    5. }
    6. int main()
    7. {
    8. int arr[] = { 12,89,1,5,31,78,45,12,12,0,45,142,21,12 };//14个
    9. int len = sizeof(arr) / sizeof(arr[0]);
    10. test(arr);
    11. printf("主函数中的数组的长度是%d", len);
    12. return 0;
    13. }

    正确的传参方式:

    1. //正确的演示
    2. void test(int arr[],int len)
    3. {
    4. printf("函数中的数组长度%d\n", len);
    5. }
    6. int main()
    7. {
    8. int arr[] = { 12,89,1,5,31,78,45,12,12,0,45,142,21,12 };//14
    9. int len = sizeof(arr) / sizeof(arr[0]);
    10. test(arr,len);
    11. printf("主函数中的数组的长度是%d", len);
    12. return 0;
    13. }


     创作不易, 如果这份博客👍对你有帮助,可以给博主一个免费的点赞以示鼓励。
    欢迎各位帅哥美女点赞👍评论⭐收藏⭐,谢谢!!!
    如果有什么疑问或不同的见解,欢迎在评论区留言哦👀。
    祝各位生活愉快⭐

  • 相关阅读:
    [Spring MVC 5]常用注解与数据校验
    python实现从excel导出csv最完整版本,openpyxl,pandas,xlrd全家桶
    SQL复杂查询
    面试-interview100
    【python】(十七)python常用第三方库——yaml
    LeetCode每日一题 1921. 消灭怪物的最大数量
    Java Websocket 02: 原生模式通过 Websocket 传输文件
    网安学习-应急响应2
    时间选择器
    iceberg简介004_iceberg和其他数据湖框架的对比---​​数据湖Apache Iceberg工作笔记0004
  • 原文地址:https://blog.csdn.net/m0_75266675/article/details/134398577