淡淡会遗忘 2022-02-18 06:52 采纳率: 90.9%
浏览 65
已结题

形参求数组长度结果对不上

#include <stdio.h>

int  length(int* parr)
{
    int len=0;
    while(*parr!='\0')
    {
        len++;
        parr++;    
    }
    return len;
}


int main()
{
    int arr[]={10,9,8,7,6,5,4,3,2,1};
    int m=length(arr);
    int n=sizeof(arr)/sizeof(arr[0]);
    printf("%d\n",m);      //结果11 
    printf("%d\n",n);      //结果10     
    return 0;    
} 

想写个函数,通过函数来求传入的数组的长度,但发现结果不对,我的目的是想让length函数返回的结果为数组arr的长度,也就是10,有没有人帮忙看看,我方法哪弄错了,怎么改?

  • 写回答

2条回答 默认 最新

  • 谛凌 2022-02-18 07:17
    关注

    题主你是想求数组长度,而不是里面有效元素数,对吗

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
    淡淡会遗忘 2022-02-18 07:38

    一般情况下,两个不都一样么,你可以理解为里面有效的元素个数(10),不统计斜杠0

    回复
    谛凌 回复 淡淡会遗忘 2022-02-18 07:46

    不一样,sizeof是分配的内存,你不存数字,内存也是被占用。你可以试试
    定义
    int arr[20]={10,9,8,7,6,5,4,3,2,1};
    int n=sizeof(arr)/sizeof(arr[0]);
    你输出n看看,此时不是10,而是20,因为你分配的内存是20个int型

    回复
    淡淡会遗忘 回复 谛凌 2022-02-18 07:50

    那我那段程序怎么改?

    回复
    展开全部8条评论
查看更多回答(1条)
编辑
预览

报告相同问题?

问题事件

  • 已结题 (查看结题原因) 2月19日
  • 已采纳回答 2月18日
  • 创建了问题 2月18日
手机看
程序员都在用的中文IT技术交流社区

程序员都在用的中文IT技术交流社区

专业的中文 IT 技术社区,与千万技术人共成长

专业的中文 IT 技术社区,与千万技术人共成长

关注【CSDN】视频号,行业资讯、技术分享精彩不断,直播好礼送不停!

关注【CSDN】视频号,行业资讯、技术分享精彩不断,直播好礼送不停!

客服 返回
顶部