JNI 初探
[TOC]
简介
java native interface 作用:java 与 c++ 之间通信的桥梁与协议
基础知识
指针
内存地址
- 定义
数据类型* 变量名
**eg:**
```
int* p;
```
-
给指针变量赋值
方式1: 直接赋值
*p=6;
方式2: 通过赋地址改变其值(获取变量i的地址,并赋值给指针变量p)
p=&i;
-
获取指针变量的值
*变量名
```
printf("p:%d\n",*p);
```
函数体指针
- 定义
数据类型 (*变量名)(对应函数的参数)
- 使用
变量名(对应函数的参数)
```
#include<stdio.h>
#include<stdlib.h>
/**
定义一个函数
*/
int add(int x, int y){
return x+y;
}
int main(){
// 定义一个函数指针
int (*icatorName)(int x,int y);
icatorName = add;
// 使用
int r = icatorName(1,20);
printf("r=%d\n",r);
}
```
数组
数组在内存地址中是一块连续的地址空间
- 定义
数据类型 变量名[]
```
int array[]={3,55,99,80};
```
-
获取数组的值
变量名[下标索引]
*(变量名+下标索引)
int i=0; for(i=0;i<4;i++){ printf("获取方式:变量名[下标索引]\t %d:%d\n",i,array[i]); printf("获取方式:*(变量名+下标索引)\t %d:%d\n",i,*(array+i)); }
Demo
MAC 编写并运行 C++程序
-
打开终端(terminal.app)
-
指定目录下新建c++程序文件,eg:test.cpp
CjMBP:c cj$ vim test.cpp
-
编写c++代码,保存并退出
#include<stdio.h> #include<stdlib.h> int main(){ printf("hell c \n"); return 0; }
-
编译c++程序
g++ -o 编译后的文件名 要编译的文件名.cpp
```
CjMBP:c cj$ g++ -o test test.cpp
CjMBP:c cj$
```
- 执行编译后的c++程序
./编译后的文件名
```
CjMBP:c cj$ ./test
hell c
CjMBP:c cj$
```