标签:
JNI java本地开发接口
JNI 是一个协议
这个协议用来沟通java代码和外部的本地代码(c/c++).
通过这个协议,java代码就可以调用外部的c/c++代码
外部的c/c++代码也可以调用java代码
* 输出
#include <stdio.h> //standard input output #include <stdlib.h> main(){ printf("小志的逗比精神永存\n"); system("pause"); }
* C调用java的hello
public class Hello { public static void main(String[] dd){ System.out.println("hello from java"); } }
#include <stdio.h> #include <stdlib.h> main(){ printf("hello from c\n"); system("java Hello"); system("pause"); }
* C的基本数据类型,
char, int, float, double, long, short, signed, unsigned
#java的基本数据类型长度
* byte:1
* short:2
* int:4
* long:8
* boolean:1
* char:2
* float:4
* double:8
#c的基本数据类型长度
* short:2
* int:4
* long:4
* char:1
* float:4
* double:8
#include <stdio.h> #include <stdlib.h> main(){ //char, int, float, double, long, short, signed, unsigned int i =3; char c = ‘a‘; long long ago = 12314324; short int i2 = 2; long int i3 = 3243; //printf("i的值为%d\n", i); printf("char的长度:%d\n", sizeof(char)); printf("int的长度:%d\n", sizeof(int)); printf("float的长度:%d\n", sizeof(float)); printf("double的长度:%d\n", sizeof(double)); printf("long的长度:%d\n", sizeof(long)); printf("short的长度:%d\n", sizeof(short)); printf("long long的长度:%d\n", sizeof(long long)); printf("short int的长度:%d\n", sizeof(short int)); printf("long int的长度:%d\n", sizeof(long int)); system("pause"); }
* 输出函数
#include <stdio.h> #include <stdlib.h> /* %d - int %ld – long int %hd – 短整型 %c - char %f - float %lf – double %u – 无符号数 %x – 十六进制输出 int 或者long int 或者short int %o - 八进制输出 %s – 字符串 */ main(){ int i = -3; long l = 34567; char c = ‘a‘; float f = 3.1466666666; double d = 3.1466666666; char arr[] = "小志的二逼精神永存"; printf("%c\n", c); printf("%d\n", i); printf("%f\n", f); printf("%lf\n", d); printf("%u\n", i); printf("%#x\n", l); printf("%#o\n", l); printf("%s\n", arr); system("pause"); }
* 输入函数
#include <stdio.h> #include <stdlib.h> main(){ printf("请输入班级人数:\n"); int number; //&:取出number的内存地址 scanf("%d", &number); printf("请输入班级名称:\n"); char name[10]; scanf("%s", &name); printf("number的地址%#x\n", &number); printf("name的地址%#x\n", &name); printf("班级人数为%d,名称为%s\n", number, name); system("pause"); }
“*”的三种用法
1. 乘法
2. int* p:定义一个指针变量p,p中存放一个内存地址,这个地址所存放的数据规定是int型
3. *p:取出p中保存的内存地址存放的数据
* 指针和指针变量的关系
指针就是地址,地址就是指针
地址就是内存单元的编号
指针变量是存放地址的变量
指针和指针变量是两个不同的概念
但是要注意: 通常我们叙述时会把指针变量简称为指针,实际它们含义并不一样
* 为什么使用指针
指针的重要性
直接访问硬件 (opengl 显卡绘图)
快速传递数据(指针表示地址)
返回一个以上的值(返回一个数组或者结构体的指针)
表示复杂的数据结构(结构体)
方便处理字符串
指针有助于理解面向对象
#include <stdio.h> #include <stdlib.h> main(){ int i = 3; //定义一个保存int类型数据的地址的指针变量 ,该变量的值是一个内存地址 int* p = &i; int** q = &p; printf("i的地址%#x\n", p); printf("i的值为%d\n", *p); printf("i的值为%d\n", **q); system("pause"); }
#include <stdio.h> #include <stdlib.h> main(){ //野指针:没有赋值的指针 int* p; int i; double d = 3.14; p = &d; //*p = 23; printf("%#x\n", p); printf("%lf\n", *p); system("pause"); }
* 值交换(值传递: 所有语言所有平台,都只有值传递,引用传递传递的值是内存地址)
#include <stdio.h> #include <stdlib.h> void swap(int* p, int* q){ int temp = *p; *p = *q; *q = temp; } main(){ int i = 3; int j = 5; printf("i=%d\n", i); printf("j=%d\n", j); swap(&i, &j); printf("i=%d\n", i); printf("j=%d\n", j); system("pause"); }
标签:
原文地址:http://www.cnblogs.com/anni-qianqian/p/5571624.html