首页 > 代码库 > Android的JNI开发

Android的JNI开发

变量的定义	int i;	typedef int x;//定义一个int x数据类型	x a=10;	printf("size=%d",sizeof(i));//获取int类型长度(4个字节)	system("pause");//不让窗体立即消失循环在c语言中,循环的变量必须在外面生命	int i	for(i=0;i<10;i++){		printf("i=%d",i);	}	指针变量	int i=10;	int* p;//声明一个指针变量	p=&i;//取出i的地址值,赋值给指针变量	*p取出指针指向的值多级指针	int i=10;	int* p;	p=&i;	int** s;	s=&p;	int*** x;	x=&s;	//取出i的值,这里有一个规律,前面有多少个*,取得时候就在签名加几个*	printf("i=%d",***x);数组	数组的定义	int arr[3]或者int arr[]={1,2,3};		遍历数组:	//1.普通方式 	int i;	for(i=0;i<3;i++){	     printf("arr[%d]=%d\n",i,arr[i]);           	}	//2.通过指针方式获取 <*(arr+j)>	int j;	for(j=0;j<3;j++){	   printf("arr[%d]=%d\n",j,*(arr+j));	} 结构的定义与使用	//1.定义结构体 	struct person{		int age;	}	//2.结构体的使用	struct person p;	p.age=10;	printf("p.age=%d",p.age);结构体指针变量的定义与使用	struct person{		int age;	} *p;//声明一个结构体指针变量 	//动态申请内存空间	p=(struct person*)malloc(sizof(struct person));	p->age=18;	printf("p->age=%d",p->age);函数的定义与使用	#include<stdio.h>	int sum(int x,int y);//声明一个函数 	main(){	       int x=10;	       int y=10;	       int z=sum(x,y);//调用函数进行求和运算 	       printf("z=%d",z);	       system("pause");	}	//真实的函数 	int sum(int x,int y){	    return x+y;	}函数的还可以直接定义	int sum(int x,int y){	    return x+y;	}	main(){	       int x=10;	       int y=10;	       int z=sum(x,y);//调用函数进行求和运算 	       printf("z=%d",z);	       system("pause");	}两个变量的交换	change2(int* x,int* y){	       int z=*x;	       *x=*y;	       *y=z;	} 	main(){	       int x=1;	       int y=2;	       change2(&x,&y);	       printf("x=%d\n",x);	       printf("y=%d\n",y);	       system("pause"); 	} 指针函数	#include<stdio.h>	int sum(int x,int y){	    return x+y;	} 	main(){	       int (*s)(int,int); //定义一个函数指针 	       s=sum; //给函数指针赋值 	       int x=s(2,3);	       printf("x=%d",x);	       system("paud");	}在结构体中使用函数指针	1.定义一个函数	2.顶一个结构体,并在结构体中 定义一个函数指针	3.在main函数中,定义一个结构体指针	4.通过结构体指针给函数指针赋值,以及成员赋值	#include<stdio.h>	//1.定义一个函数	int sum(int x,int y){	    return x+y;	} 	//2.顶一个结构体,并在结构体中 定义一个函数指针	struct stu{	       int age;	       //函数指针 	       int (*score)(int,int);	} 	main(){	       //3.定义一个结构体指针 	      struct stu* s=(struct stu*)malloc(sizeof(struct stu*));	     	      //4.给函数指针赋值 	      s->score=sum;	      //给结构体中成员属性赋值 	      s->age=s->score(1,2);	      	      printf("age=%d",s->age);	      system("pause");        	}联合的定义与使用	//定义一个联合 	union un{	      int age;	      char x;	} 	main(){	       union un  abc;//定义一个联合变量 	       abc.age=10; 	       printf("age=%d\n",abc.age);	       printf("x=%d\n",abc.x);	       system("pause");	}枚举的使用//定义一个枚举,枚举中的成员都是一个整型常量值enum mode{     a=100,//如果不赋值,默认从0开始,如果赋值则后面的一次加1     b} main(){       //定义一个枚举变量       enum mode m=a;       printf("m=%d",m);       system("pause"); }类型说明 	typedef int xx ;	xx a=100;define指令,定义全局内容;在c中1代表真,0代表假 	#define TRUE 1;	#define FALSE 0;	if(TRUE){	....	}else{....}	定义一个全局方法	#define Max(x,y) (x>y)?x:y动态数组	int* arr=(int*)malloc(4*10);文件读取	int main(){	   FILE* fp;	   char ch;	   if((fp=fopen("mm.txt","rt"))== NULL){		   printf("文件不存在or读取失败\n");	   }else{	       //怎么读取文件的内容?		ch=fgetc(fp);//从流里面获取字符 		while (ch!=EOF)		{		putchar(ch);//在stdout上输出字符 		ch=fgetc(fp);		}		fclose(fp);//关闭一个流	   }	   system("pause");//暂停   让cmd窗口不消失 	}jni开发流程:1 新建一个android工程2 add native support  生成jni文件夹   Android.mk文件  +  xx.cpp文件3 修改文件  Android.mk  .cpp 改为.c       xx.cpp文件 改为.c----------------------------------------------------------------------------该工程可以进行ndk开发4 在MainActivity.java里面添加一个native方法   public native String  getString();5 生成头文件  cmd     cd /d 工程的src目录  javah  com.itcast.jni1.MainActivity   在src生成一个 com_itcast_jni1_MainActivity.h----------------------------------------------------------------------------生成了头文件6 把com_itcast_jni1_MainActivity.h 复制到jni下面,拷贝里面的方法到.c文件7 完成.c文件内容的编写----------------------------------------------------------------------------c代码编写完成8 编译c代码    右键工程 --》 Build configuration --> buill all  生成.so文件9 加载动态链接库文件  static{     System.loadLibrary("hello");   }10 调用native方法