NDK以及C語言基礎語法(一)

 

        1、什麼是NDK?html

            Native Development Kit (本地開發工具包);java

            NDK中提供了一系列的工具,幫助咱們快速開發C/C++的動態庫,並能自動將so文件和java文件一塊兒打包成apk;c++

            做用是讓java代碼調用C和C++代碼;數組

       2、什麼是JNI?安全

             Java Native Interface (java 本地化接口);oracle

             是java調用C/C++的一套編碼規範;工具

             NDK是基於JNI編碼規範進行編寫的;性能

       3、爲何使用NDK?開發工具

              安全(代碼的保護,因爲apk的java層代碼很容易被反編譯,而C/C++庫反編譯難度較大);編碼

              硬件方面: java不能直接訪問硬件  圖像處理方面C和C++比java處理的速度和性能都要好不少;

              便於移植:能夠跨語言、跨平臺;

              藉助了C/C++優秀第三方開源庫,好比openGL openCV;

       4、NDK環境的搭建

             1.環境搭建:

           (1)電腦環境的熟悉(是64位仍是32位的);

           (2)安裝對應的對應的JDK---http://www.oracle.com/technetwork/java/javase/downloads/index.html;

           (3)安裝Android Studio 

           (4)下載Cmake LLDB(支持同步調試和調用運行的插件)  NDK;

             2.項目建立:

           (1)新建項目勾選include c++ support的支持;

           (2)異常處理的支持 exception support(支持異常處理);

           (3)運行時類型信息的支持  runtime  type information support

              生成c++類的描述:

              CMakeLists.txt: NDK項目的配置文件;

              nvtive-lib.cpp: 所要調用的C++文件;.cpp是c++文件

        stringFromJNI方法: c語言入口

5、C語言基礎知識:
1.基本數據類型(基本內置類型)
(1)整型:
短整型: short int 16bit 2個字節 無符號整型 0-65535
整型:int 16bit 2個字節
長整型: long int 32個字節
(2)浮點型:
單精度(float)只能保證6位有效數字;

雙精度 (double)至少保證10位有效數字;
長雙精度(long double) 至少保證10位有效數字,可是比double提供的精度更高;
(3)字符型
char 8bit
(4)布爾型(c++纔有)
bool 只有0表明false,非0即爲真(true)
C++標準規定了每一個算術類型的最小空間,可是不阻止編譯器使用更大的空間
2.構造類型
(1)枚舉類型(enum)
(2)數組類型
(3)結構體類型(struct)
(4)共用體類型(union)
(5)類類型(class)C++纔有
3.指針類型
4.引用類型
5.空類型(void)
類類型和引用類型是C++比c中新增長的類型

 

     6.數組       由類型名、標識符和維數組成的複合數據類型,類型名規定了存放在數組中的元素的數據類型,維數指定數組中包含的元素個數。      (1)一維數組:            定義: 類型名 標識符[維數];int a1[3];           引用:標識符[維數];元素下標從0開始的;a1[1]          初始化:能夠在定義的時候初始化(能夠不寫維數),也能夠在使用前初始化(定義時必須寫維數)維數在使用以前,必須是                固定的值(由於數組的長度是固定的)       (2)二維數組:          定義:類型名 標識符[維數][維數];          引用:標識符[維數][維數];          初始化:二維數組的初始化會自動補0,若是提供了所有的元素,那麼定義時第一維能夠省略,但第二維不能省略;     7.預處理命令:(在代碼編輯以前處理的命令)在編譯期執行       預處理命令是C++統一規定的,可是它不是C++語言自己的組成部分,不能直接對它們進行編譯;      (1)宏定義:          #define  標識符 字符串   pc 3.1415          #define  宏名(參數表) 字符串      (2)條件編譯:          #ifndef          #ifdef: 標識符              當指定的標識符已經被#define命令定義過,                  程序段1             則只編譯程序段1          #else                      不然                  程序段2             編譯程序段2          #endif                     限定#ifdef命令的範圍                           #if  表達式        表達式爲真時                   程序段1         編譯程序段1                #else             不然                   程序段2         編譯程序段2                #endif            結束#if命令      (3)文件包含:           一個文件將另外一個文件的所有內容包含進來           #include                           
相關文章
相關標籤/搜索