JNI(java native interface)
java本地接口
是java和c/c++之间进行连接的桥梁,使两者可以相互调用
需要用到NDK(native Develop kits)本地开发工具集
NDK可以把c/c++编译成一个Linux下可以执行的二进制文件
java代码里面就可以通过jni调用执行二进制的文件
java数据类型和长度:int4个字节 double8个字节 float4个字节 long8个字节
short2个字节 Boolean1个字节 char2个字节 byte1个字节
c语言中数据类型比java少一些,在c语言中没有boolean类型的数据 ,int1代表真,0代表假
没有String类型的数据,通过char类型的数组表示字符串
没有byte类型,所以用char的类型表示byte类型
sizeof(); c语言的一个函数,可以把某种数据类型的长度获取出来
signed ,unsigned数据类型的修饰符
signed int;代表有符号的int的数据
unsigned int;代表无符号的int的数据
符号的修饰符只能修饰整数类型的数据long int,
不能修饰浮点型的数据float,double,
用不同的占位符修饰不同的类型
char c[20];//定义一个数组
scanf("%s",c) //从键盘接受一个字符串,放在c数组里面
printf("s=%s\n",c);
指针是什么,指针代表的是地址,是一个内存空间
&取地址符
存放内存地址的变量,就是指针变量
指针和指针变量
指针是用来表示一块内存地址的
指针变量是用来存放一个内存地址的
int i=5;
int* p;//定义一个指针变量
p=&i;
i与p互不影响
i与*p相互影响,是同一个变量,同一块内存空间
*号操作符
*号的几种含义
1,*号放在某种数据类型的后面,代表就是这种数据类型的指针int*
2,*号代表一个乘法符号
3,*号放在一个指针变量的前面,代表取这个指针变量所存放的地址里面所存放的数据
指针常见错误:
/*
int* p;//定义一个指针变量
printf("*p=%d/n",*p);
指针变量如果没有赋值,就不能使用
*/
/*
int i=5;
char* p=&i;//编译错误,不符合的指针类型
类型不相同的指针,不可以相互转化
*/
使用指针的时候,不可以访问已经被系统回收掉的数据
子函数执行完毕后,子函数里面所有的局部变量都会被系统回收
如何让子函数 更改主函数里面的数据
如何让子函数 返回一个以上的值
1让子函数的形参为主函数中要修改的变量的地址
2,调用子函数的时候,把要修改的变量的地址,传递给子函数
3,在子函数里面 修改这个地址里面存放的变量的内容
4,主函数使用这个变量的时候,里面的值就发生了变化,
可以利用char类型的指针表示字符串
char* arr="hello world";