美文网首页
数组注意点

数组注意点

作者: Coder007 | 来源:发表于2016-11-10 17:44 被阅读11次
    数组在内存中的存储
    • 变量的内存寻址是从大到小,所以存储数据时会从高字节开始存储
    • 数组存储的和变量相反,元素存储是从内存地址小的开始,但是元素内部存储是和变量存储一致
    • 数组名就是数组的地址
    值传递和地址传递
    • 基本数据类型作为函数的参数是值传递
    // 如果形参是基本数据类型,在函数中修改形参的值不会影响到实参的值
    void change(int value)
    {
    }
    
    • 数组名作为函数的参数传递,是传递的数组的地址
    • 因为数组名就是数组的地址 &number == &number[0] == number
    • 如果数组作为函数的形参,元素的个数可以省略
    // 如果形参是数组,那么在函数中修改形参的值,会影响到实参的值
    void change(int values[])
    {
    }
    
    函数中计算长度
    • 如果数组作为形参,那么在函数中就不能通过数组的名称计算出数组元素的个数
    • 因为系统会自动将数组形参转换为指针,指针占用8个字节
      • 传递的是数组名称,其实传递的是地址
      • 如果传递的是地址,其实传递的是指针
      • 指针在64位编译环境占8个字节
    • 只能在外面将长度传递过来
    取出数组中得最大值
    • 定义一个变量,假设为最大值
      • 注意:不能假设一个不是数组中的值为最大值
    • 遍历数组
    • 依次取出数组中每一个元素的值,和假设的最大值进行比较,如果数组的元素大于假设的最大值,就交换最大值
    int arrayMax(int nums[], int length)
    {
        int max = nums[0];
        for(int i = 1; i < length; i++)
        {
            if(max < nums[i])
            {
                max = nums[i];
            }
        }
        return max;
    }
    
    • 因为数组是指针传递,所以也可以通过索引来取出最大值
    • 这种方式可以多思考,还有很多情景可以使用索引来进行
    int arrayMax(int nums[], int length)
    {
        int max = 0;
        for(int i = 1; i < length; i++)
        {
            if(nums[max] < nums[i])
            {
                max = i;
            }
        }
        return nums[max];
    }
    

    相关文章

      网友评论

          本文标题:数组注意点

          本文链接:https://www.haomeiwen.com/subject/roexpttx.html