当前位置:网站首页 > Java基础 > 正文

java调用dll动态库隐藏(java生成dll动态库)



一维数组:

#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:

到此这篇java调用dll动态库隐藏(java生成dll动态库)的文章就介绍到这了,更多相关内容请继续浏览下面的相关 推荐文章,希望大家都能在编程的领域有一番成就!

版权声明


相关文章:

  • java面试八股文是哪些(java面试八股文汇总)2026-04-18 22:54:10
  • java课程收费网站(免费java培训课程)2026-04-18 22:54:10
  • jvm内存模型和java内存模型(java内存模型和java内存结构)2026-04-18 22:54:10
  • 华为java机试题库 社招(华为java面试难吗)2026-04-18 22:54:10
  • string转map对象(java string转map对象)2026-04-18 22:54:10
  • 广度优先搜索java实现(广度优先搜索java实现方法)2026-04-18 22:54:10
  • hook框架是什么(java hook框架)2026-04-18 22:54:10
  • pytorch模型部署到java(pytorch模型部署到springbootweb)2026-04-18 22:54:10
  • 单向链表反转java实现(单向链表反转java实现头插法)2026-04-18 22:54:10
  • java 字符串转int(java 字符串转成char)2026-04-18 22:54:10
  • 全屏图片