自学C DAY5
函数嵌套调用
1️⃣
#include <stdio.h>
void Print(int brr[3][5], int r, int c)
{
int i = 0;
for (i = 0; i < r; i++)
{
int j = 0;
for (j = 0; j < c; j++)
{
printf("%d ", brr[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;
}
2️⃣
//判断某年某月 有多少天
int main()
{
int y = 0;
int m = 0;
scanf("%d %d", &y, &m);
int d = jieguo(y, m);
printf("%d\n", d);
return 0;
}
int jieguo(int y, int m)
{
int days[] = { 0, 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31 };
int jieguo = days[m];
if (runnian(y)&&m == 2);
jieguo += 1;
return jieguo;
}
int runnian(int y)
{
if (((y % 4 == 0) && (y % 100 != 0)) || (y % 400 == 0))
return 0;
else
return 1;
}
链式访问
printf函数返回的是打印在屏幕上的字符的个数。
#include <stdio.h>
int main()
{
printf("%d", printf("%d", printf("%d", 43)));
return 0;
}
4321
如果加个空格
printf("%d ", printf("%d ", printf("%d ", 43)));
43 3 2
static修饰局部变量
❶#include <stdio.h>
void test()
{
int i = 0;
i++;
printf("%d ", i);
}
int main()
{
int i = 0;
for(i = 0; i < 5; i++)
{
test();
}
return 0;
}
❷
#include <stdio.h>
void test()
{
//static修饰局部变量
static int i = 0;
i++;
printf("%d ", i);
}
int main()
{
int i = 0;
for(i = 0; i < 5; i++)
{
test();
}
return 0;
}
以下是两段代码的运行结果及解释:
代码 1 运行结果
输出: 1 1 1 1 1
解释:
在 test 函数中, int i = 0; 定义的是普通局部变量。普通局部变量的作用域仅在所在函数内,且每次调用函数时都会重新初始化。
main 函数通过 for 循环调用 test 函数 5 次,每次调用 test 时, i 都会被重新初始化为 0 ,执行 i++ 后变为 1 ,然后打印,所以每次输出都是 1 。
代码 2 运行结果
输出: 1 2 3 4 5
解释:
在 test 函数中, static int i = 0; 定义的是静态局部变量。静态局部变量的生命周期是整个程序运行期间,且只会在第一次调用函数时初始化,之后调用函数时,会保留上一次调用结束后的值。
如果写了个代码卖给别人 但不让别人知道怎么实现的函数 将函数的定义隐藏起来
将诶这配置类型改为静态库 然后生成解决方案 可以看到生成了add.lib 文件 即静态库
需要在 test.c 文件导入静态库
#pragma comment(lib,"***.lib")
更多推荐

所有评论(0)