数组传参,传递的实质是首元素的地址。
(一)一维数组
例:写一个函数对将一个整型数组的内容,全部置为-1,再写一个函数打印数组的内容.
#include<stdio.h>
void reset(int arr[], int x)//形参和实参名可以相同也可以不相同
{
int i = 0;
for (size_t i = 0; i < x; i++)
{
arr[i] = -1;
}
}
void print_arr(int arr[],int x)
{
int i = 0;
for (size_t i = 0; i < x; i++)
{
printf("%d", arr[i]);
}
}
int main()
{
int arr[] = { 1,2,3,4,5,6,7,8,9 };
int x = sizeof(arr) / sizeof(arr[0]);
reset(arr,x);//这里的reset函数要能够对数组内容进行设置,就得把数组作为参数传递给函数,
//同时函数内部在设置数组每个元素的时候,也得遍历数组,需要知道数组的元素个数。所以我们需要
//给reset传递2个参数,一个是数组,另外一个是数组的元素个数。仔细分析print_arr函数也是一样的.
print_arr(arr, x);
return 0;
}
(二)二维数组
例:打印一个二维数组.
#include<stdio.h>
void Print(int arr[3][5], int a, int b)
//此处形参中的数组行可以省略列不可以省略
{
int i = 0;
int j = 0;
for (size_t i = 0; i < a; i++)
{
for (size_t j = 0; j < b; j++)
{
printf("%d", arr[i][j]);
}
printf("\n");
}
}
int main()
{
int arr[3][5] = { {1,2,3,4,5},{2,3,4,5,6},{3,4,5,6,7} };
Print(arr, 3, 5);
return 0;
}
这里我们需要知道数组传参的几个重点知识:
1.函数的形式参数要和函数的实参个数匹配
2.函数的实参是数组,形参也是可以写成数组形式的
3,形参如果是一维数组,数组大小可以省略不写
4.形参如果是二维数组,行可以省略,但是列不能省略
5.数组传参,形参是不会创建新的数组的
6.形参操作的数组和实参的数组是同一个数组
标签:传参,arr,省略,数组,形参,int,一维,函数 From: https://blog.csdn.net/2302_79637129/article/details/136545728