A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© bmzhanglei 初级黑马   /  2014-4-27 18:12  /  1209 人查看  /  7 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

int maxOfArray(int array[])
{
    //这里报错
    int length=sizeof(array)/sizeof(int);
    // 1.定义一个变量存储最大值(默认就是首元素)
    int max = array[0];
   
    // 2.遍历所有元素,找出最大值
    for (int i = 1; i<length; i++)
{
    if (array[i] > max)
        {
            max = array[i];
        }
    }
    return max;
}

为什么不能再里面获取数组的长度啊?

评分

参与人数 1技术分 +1 收起 理由
jing迪 + 1

查看全部评分

7 个回复

倒序浏览
数组作为函数参数,传递到是整个数组的地址,而不是传递数组里的数组元素


int maxOfArray(int array[])
{
    //这里报错
    printf("$d\n",sizeof(array));//打印出的数值是8,这个后面会讲的,想要数组长度只能去main里
    //int length=sizeof(array)/sizeof(int);
    // 1.定义一个变量存储最大值(默认就是首元素)
    int max = array[0];
   
    // 2.遍历所有元素,找出最大值
    for (int i = 1; i<length; i++)
{
    if (array[i] > max)
        {
            max = array[i];
        }
    }
    return max;
}

评分

参与人数 1技术分 +1 收起 理由
jing迪 + 1

查看全部评分

回复 使用道具 举报
int length=sizeof(array)/sizeof(int)
sizeof(array) = 4
sizeof(int) = 4结果为1
而你for (int i = 1; i<length; i++)这句话执行完就没有循环,所以报错
回复 使用道具 举报
还是内存那一块的东西没吃透应该,数组的内容存放在堆中,数组名只是存放在栈中,是对数组地址的引用,其中的值是数组首个元素在内存中的地址,不知道这么说是否准确
回复 使用道具 举报
本帖最后由 桑托尔 于 2014-4-27 19:39 编辑
  1. #include <stdio.h>
  2. //再加一个关于数组长度的形参,这个形参在主函数调用的时候再计算长度
  3. int maxOfArray(int array[],int length)
  4. {
  5.    
  6.     // 1.定义一个变量存储最大值(默认就是首元素)
  7.     int max = array[0];
  8.    
  9.     // 2.遍历所有元素,找出最大值
  10.     for (int i = 1; i<length; i++)
  11. {
  12.     if (array[i] > max)
  13.         {
  14.             max = array[i];
  15.         }
  16.     }
  17.     return max;
  18. }

  19. int main ()
  20. {
  21.         int a [] = {1,2,3,4,5,6,7,8,9};
  22.         
  23.         //这里面将计算好的长度值以形参的形式带入到你的自定义函数中
  24.         int m = maxOfArray( a , sizeof(a)/sizeof(int));

  25.         printf("数组中的最大值为%d\n",m) ;

  26.         return 0 ;

  27. }
复制代码


这道题其实MJ老师在视频里面讲过,
\黑马程序员_iOS开发零基础入门教程\黑马程序员_IOS开发零基础教程-03C语言\06-复杂数据类型\01-数组\练习02 。
建议温习一下
回复 使用道具 举报
那个传进来的array为什么不能再函数里获取长度,而为什么非的再 main函数里去获得呢
js 函数就可以在里面获取 数组的长度啊
回复 使用道具 举报
Er01c 中级黑马 2014-4-27 20:55:01
7#
确定一个一维数组需要两个参数:
1、数组第一个元素的地址
2、数组的长度 len
回复 使用道具 举报
明白了,谢谢各位大侠的帮助
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马