一维数组:
#include<stdio.h>
void set_arr(int arr[], int sz, int n)
{
int i;
for (i = 0; i < sz; i++)
{
arr[i] = n;
}
}
void print_arr(int arr[], int sz)
{
int i;
for (i = 0; i < sz; i++)
{
printf(“%d ”, arr[i]);
}
}
int main()
{
int arr[10] = { 1,2,3,4,5,6,7,8,9,0 };
int sz = sizeof(arr) / sizeof(arr[0]);
set_arr(arr, sz, -1);//设置数组内容为-1
print_arr(arr, sz);//打印数组内容
return 0;
}
二维数组:
#include<stdio.h>
void print_arr(int arr[][5], int a,int b)
{
int i,j;
for (i = 0; i < a; i++)
{
for (j = 0; j < b; j++)
{
printf(“%d ”, arr[i][j]);
}
printf(“ ”);
}
}
int main()
{
int arr[3][5] = {1,2,3,4,5,2,3,4,5,6,3,4,5,6,7};
print_arr(arr,3,5);//打印数组内容
return 0;
}
注意:1.函数的形式参数要和函数的实参个数匹配
2.形参如果是⼀维数组,数组⼤⼩可以省略不写 ;如果是⼆维数组,⾏可以省略,但是列不能省略
3.数组传参,形参是不会创建新的数组的;形参操作的数组和实参的数组是同⼀个数组
五.嵌套调用和链式访问
嵌套调用是函数之间的相互调用。假设我们计算某年某月有多少天?我们可以使用嵌套调用实现。
下面的代码中就是在主函数中使用了自定义days函数,在自定义days函数中使用了years函数。
#include<stdio.h>
int years(int x)
{
if ((x % 4 == 0 && x % 100 != 0) || x % 400 == 0)
return 1;
else
return 0;
}
int days(int x, int y)
{
int arr[12] = { 31,28,31,30,31,30,31,31,30,31,30,31 };
if (years(x) && y == 2)
arr[y - 1]++;
return arr[y - 1];
}
int main()
{
int year,month;
scanf(“%d%d”, &year, &month);
printf(“%d”, days(year, month));
return 0;
}
链式访问就是将⼀个函数的返回值作为另外⼀个函数的参数,像链条⼀样将函数串起来。简单的链式访问如下:
#include<stdio.h>
#include<string.h>
int main()
{
printf(“%zd ”, strlen(“abcde”));//strlen的返回值作为printfd()函数的参数
return 0;
}
稍微复杂一点:
#include<stdio.h>
int main()
{
printf(“%d”, printf(“%d”, printf(“%d”, 43)));
return 0;
}

结果为什么是这样的呢?首先最里面的printf(“%d”, 43)会打印出43。接下来在printf(“%d”, printf(“%d”, 43))中里面的printf(“%d”, 43)的返回值(printf函数的返回值指的是printf函数在成功执行时返回写入的字符总数)就是2,这个2再通过printf函数打印。同理,再通过返回值打印出1。
六.函数的声明和定义
当我们把刚才的判断天数的函数中的自定义函数移到主函数的后面,会出现问题。

因为程序的执行是从上到下的,在之前没有对这个函数进行定义,所以当运行到主函数中的days函数时就不认识他了。这个时候我们就需要对函数进行声明。
#include<stdio.h>
int years(int x);
int days(int x, int y);
int main()
{
int year,month;
scanf(“%d%d”, &year, &month);
printf(“%d”, days(year, month));
return 0;
}
int years(int x)
{
if ((x % 4 == 0 && x % 100 != 0) || x % 400 == 0)
return 1;
else
return 0;
}
int days(int x, int y)
{
int arr[12] = { 31,28,31,30,31,30,31,31,30,31,30,31 };
if (years(x) && y == 2)
arr[y - 1]++;
return arr[y - 1];
}
像这样在使用函数之前先对函数进行声明就解决了。
我们再来看多个文件怎么进行声明和定义
test.c:
add.c:
add.h:


版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容,请联系我们,一经查实,本站将立刻删除。
如需转载请保留出处:https://51itzy.com/kjqy/146815.html