变量的定义
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方法

Android的JNI开发的更多相关文章

  1. Android Studio JNI开发入门教程

    Android Studio JNI开发入门教程 2016-08-29 14:38 3269人阅读 评论(0) 收藏 举报  分类: JNI(3)    目录(?)[+]   概述 在Andorid ...

  2. android下JNI开发

    android下JNI开发 what 什么是JNI JNI java native interface native本地 java本地接口 通过JNI可以实现java和本地代码之间相互调用 jni可以 ...

  3. Android Studio JNI 开发简单案例

    转载:http://www.androidchina.net/5744.html 进程保活,热修复,硬件接入等等都需要底层的支持,而底层代码是 C .C++ 写的,那么在 Android 中怎么调用底 ...

  4. 实现Android Studio JNI开发C/C++使用__android_log_print输出Log

    相信很多人在刚开始学习Android JNI编程的时候,需要输出Log,在百度Google搜索的时候都是说需要在Android.mk中加入LOCAL_LDLIBS+= -L$(SYSROOT)/usr ...

  5. NDK工具开发Jni,Android studio jni开发

    NDK工具开发JNI 对于JNI的作用,我这边就不详细说明了,百度google 有很多这样的介绍,这边着重详解AS使用NDK工具开发,调C的流程. 1,创建工程 2,创建native方法 //该类的路 ...

  6. Android游戏开发实践(1)之NDK与JNI开发03

    Android游戏开发实践(1)之NDK与JNI开发03 前面已经分享了两篇有关Android平台NDK与JNI开发相关的内容.以下列举前面两篇的链接地址,感兴趣的可以再回顾下.那么,这篇继续这个小专 ...

  7. Android游戏开发实践(1)之NDK与JNI开发01

    Android游戏开发实践(1)之NDK与JNI开发01 NDK是Native Developement Kit的缩写,顾名思义,NDK是Google提供的一套原生Java代码与本地C/C++代码&q ...

  8. Android游戏开发实践(1)之NDK与JNI开发02

    Android游戏开发实践(1)之NDK与JNI开发02 承接上篇Android游戏开发实践(1)之NDK与JNI开发01分享完JNI的基础和简要开发流程之后,再来分享下在Android环境下的JNI ...

  9. android JNI开发

    1.NDK简介 NDK(Native Development Kit)NDK提供了一系列的工具,帮助开发者快速开发C(或C++)的动态库,并能自动将so和java应用一起打包成apk.NDK集成了交叉 ...

随机推荐

  1. Android系统移植与驱动开发——第五章--搭建开发板的测试环境

    开发板上安装嵌入式系统要比手机上简洁很多,有很多扩展的接口,适合对程序进行测试,这里所提及的是S3C6410开发板.它是由三星公司推出的一款低功耗/高性价比的RISC处理器.,其中包含强大的硬件加速器 ...

  2. Windows Azure上的Odoo(OpenERP)

    OpenERP 改名为 Odoo 了,感觉名字怪怪的.Windows Azure也进入国内了,学习了一段时间的Azure,把它门结合在一起搞搞吧!本系列文章不涉及开发,纯属环境搭建及Odoo 系统功能 ...

  3. css居中技巧

    1    text-align: center; 只能对图片,按钮,文字等行内元素(display为inline或inline-block等)进行水平居中.在IE6.7中能对任何元素进行水平居中.另外 ...

  4. dns-prefetch—DNS预解析技术

    今天在看一个网站的源代码时 发现了 <link rel="dns-prefetch" href="//static.tuweia.cn/"> 对dn ...

  5. http方法

    http method(方法):1.get 从服务器获取资源2.post 向服务器发送资源3.put 向服务器推送资源4.delete 告诉服务器删除某个资源5.head 告诉服务器返回数据时不需要返 ...

  6. 【转】数据库分页Java实现

    [转]数据库分页Java实现 MySQL分页 主要是MySQL数据库内置LIMIT函数 注意添加mysql的JAR包mysql-connector-java-5.1.13-bin.jar 在中小数据量 ...

  7. C# 各版本更新简介

    经常在不同版本的.net framework下作业.于是乎想了解下,.net下各版本C#的新特性. ---------- C#2.0  针对于.net framework 2.0 新特性有: 分部类 ...

  8. 【HAOI2011】向量

    [题目描述] 给你一对数a,b,你可以任意使用(a,b), (a,-b), (-a,b), (-a,-b), (b,a), (b,-a), (-b,a), (-b,-a)这些向量,问你能不能拼出另一个 ...

  9. 修改一行SQL代码 性能提升了N倍

    在PostgreSQL中修改了一行不明显的代码,把(ANY(ARRAY[...]) 改成 ANY(VALUES(...))),结果查询时间从20s变为0.2s.最初我们学习使用EXPLAN ANALY ...

  10. C++在使用Qt中SLOT宏需要注意的一个小细节

    大家都知道C++虚函数的机制,对于基类定义为虚函数的地方,子类如果覆写,在基类指针或者引用来指向子类的时候会实现动态绑定. 但如果指针去调用非虚函数,这个时候会调用C++的静态绑定,去判断当前的指针是 ...