zoukankan      html  css  js  c++  java
  • 开始我的 JNI 入门吧

    JNI (java native interface)   java本地开发接口(一句话 : 就是1个 adapter)。

    JNI  是一个协议  -   是用来让   java代码和C,C++ 代码可以沟通(相互调用) 的一种协议 ,JNI 扩展了java虚拟机的能力 。

    Java语言提供的类库无法满足要求,且在数学运算,实时渲染的游戏上,音视频处理等方面上C/C++相比效率稍低

    Java语言无法直接操作硬件,C/C++代码不仅能操作硬件而且还能发挥硬件最佳性能

    首先 要从最基本的开始 androd 调用 C,C++代码 肯定最起码代码不说会写,最起码是要能看懂和修改的,我把大1学的C语言也早早就忘光了哈哈。所以跟着复习点基础吧。

    更深入的学习就有待以后吧 - -

    C语言的基本数据类型:

             char(C语言中 byte类型也是用 char),  1
             int,     4
             float,    4
             double,     8
             signed,      4   有符号的 
             unsigned,    4   无符号的 
             long,       4- 8根据编译器的不同 
             short,      2   
            

    C语言的输入和 输出:

               %d  -  int
               %ld – long int
               %c  - char
               %f -  float
               %lf – double 
               %x – 十六进制输出 int 或者long int 或者short int
               %o -  八进制输出
               %s – 字符串
       
               int a;                 //定义变量a 
               scanf("%d",&a);        //从键盘上获取数据 放入a所在的 地址  &a           
               printf("a=%d
    ",a);    // 输出a的值 

    C语言的指针 - 这个是核心啦

           int p =11;        //32位操作系统 指针占 4个字节    64位占8个字
           int* pp = &p;
           
           printf("P的中存放的值: %d
    ",p);
           printf("P的地址是: %X
    ",&p);
           
           printf("PP指针变量存放的地址是: %X
    ",pp);
           printf("PP指针变量的大小: %d
    ",sizeof(pp));
           printf("PP指针变量存放的地址 - 对应的值: %d
    ", *pp);
           
           
           int* p; //定义一个指针变量   垃圾值
           指针变量如果没有赋值就不能使用  
             
            int dd;  
            char* c; ;  // 编译错误  不符合的指针类型  
             c = ⅆ
           //printf("*p=%d
    ",*p); 
          

    指针输出图:


    C语言的多级指针:

         int   bb = 10;
         int*   m = &bb;       //m存的是 (bb的内存地址 )
         int**  mm  = &m;      //mm 存的是  m指针变量的 -地址 
         printf("mm的值(m的内存地址) : %X
    ", *mm);
         printf("(m的内存地址) 所对应的值  = bb : %d
    ", **mm);
         printf("bb : %d
    ", bb);


    数组

            int a[5] = {1,2,3,4,5}; 
            printf("a0= %X
    ", &a[0] );   // a表示的直接就是 数组a 的第一个元素所对应的内存区域
            printf("a0= %X
    ", &a );   
           
            printf("a0= %d
    ", *(a+0));  
            printf("a1= %d
    ", *(a+1));  
            printf("a2= %d
    ", *(a+2));  
            printf("a3= %d
    ", *(a+3));
    
       
           //利用char类型指针 方便的表示一个字符串  
          
           char* arr1= "hello androd ndk";   
           printf("%s",arr1); 
          
    


    动态数组

     // 6.动态的创建1个数组
    
          int* aa = malloc(sizeof(int) * 6);    //先申请1个能够存 6个 int的空间
          aa = realloc(aa , sizeof(int)* 8);      //变成 能放8个的 空间大小
          *aa =0;
          *(aa+ 1) =1; 
          *(aa+ 2) =2; 
            
           printf("aa1= %d
    ", *(aa+1));
           printf("aa2= %d", *(aa+2));
            
           //free(aa);                               //用过后 不用了要自己手动释放 
        


    C语言的结构体

        //结构体 - 这个就有点类似 java中的class了
           struct ll{
               int    age;
               char*  name;
               char*  sex;
               };
        
           struct ll   s={11, "lilei","boy"};
           struct ll*  lss;
    
           printf("age  = %d
    ", s.age);
           printf("name = %s
    ", s.name);
           printf("sex  = %s
    ", s.sex);
                                                  //2种方式
           lss = &s;
           printf("age  = %d
    ", lss->age);
           printf("name = %s
    ", lss->name);
           printf("sex  = %s
    ", lss->sex);     



    联合体

      
        union { long i; char ii; int iii; }    pp ; 
       
        // 联合体的作用就是用来表示一组数据类型 数据的数据类型为这一组中的某一种数据类型 
        //注意 : 联合体里面的数据内容会相互覆盖 
        
        printf("pp:%d
    ",sizeof(pp));  
        pp.ii = 'A';
        printf("long=%ld
    ",pp.i);
        printf("char=%c
    ",pp.ii);
        printf("int=%d
    ",pp.iii);
    



    枚举

         enum WeekDay
         {
             Monday,Tuesday,Wednesday,Thursday,Friday,Saturday,Sunday
         };
         
         //其实就是一连串的数字而已 
         enum WeekDayNum
         {
             Monday1=50,Tuesday1,Wednesday1,Thursday1,Friday1,Saturday1,Sunday1
         };
         
         
         enum WeekDay day = Sunday;
         enum WeekDayNum dayNum = Sunday1;
         
         printf("day : %d
    ",day);
         printf("dayNum : %d
    ",dayNum);
         
         system("pause");
        



    typedef

         typedef int  myInt;
         myInt a = 10;
         printf("myInt -  a: %d
    ",a);
    



    宏定义

         #define STE_LEN 80          


    还有很多要复习的东西,先看这么多。



  • 相关阅读:
    [循环卷积]总结
    [FFT/NTT/MTT]总结
    [BZOJ 4870] 组合数问题
    [BZOJ 4809] 相逢是问候
    [BZOJ 4591] 超能粒子炮-改
    __getattribute__
    __repr__
    __reduce__
    数据库查询转excel小工具
    Git常用操作
  • 原文地址:https://www.cnblogs.com/pangblog/p/3359756.html
Copyright © 2011-2022 走看看