函数嵌套调用

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")

Logo

有“AI”的1024 = 2048,欢迎大家加入2048 AI社区

更多推荐