一维数组:
#include
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
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;
}
嵌套调用是函数之间的相互调用。假设我们计算某年某月有多少天?我们可以使用嵌套调用实现。
下面的代码中就是在主函数中使用了自定义days函数,在自定义days函数中使用了years函数。
#include
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
#include
int main()
{
printf("%zd ", strlen("abcde"));//strlen的返回值作为printfd()函数的参数
return 0;
}
稍微复杂一点:
#include
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
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:

版权声明:
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若内容造成侵权、违法违规、事实不符,请将相关资料发送至xkadmin@xkablog.com进行投诉反馈,一经查实,立即处理!
转载请注明出处,原文链接:https://www.xkablog.com/jjc/46606.html