数组在内存中的存储
- 变量的内存寻址是从大到小,所以存储数据时会从高字节开始存储
- 数组存储的和变量相反,元素存储是从内存地址小的开始,但是元素内部存储是和变量存储一致
- 数组名就是数组的地址
值传递和地址传递
// 如果形参是基本数据类型,在函数中修改形参的值不会影响到实参的值
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];
}
网友评论