jni : java native interface
c 基础
基本数据类型
- short : 2个字节
- int: 4个字节
- long: 4个字节
- float : 4个字节
- double: 8个字节
- char: 1个字节
long long : 8个字节
signed 有符号
- 最高位做符号位。如果为1的时候,代表负数。
unsigned 无符号
- 最高位不再是符号位, 只能用来表示整数
常用的占位符:
- %d 表示一个有符号的十进制数
- %u 表示一个无符号的十进制数
- %x 表示一个十六进制。
- %#x 用十六进制表示,但是有一个十六进制表示的开头:0x
- %c 字符
- %f 浮点数
- %ld 表示一个长整形的十进制数
- %o 表示一个八进制的数
- %#o 用八进制表示,但是有一个八进制的开头:0
获取变量的地址
- &: 如果是一元表达式,则认为是取地址符
指针
- 指针的值 指向一个内存地址
- 表现形式:类型* 指针的变量名
获取地址(指针)上的内容:
int * p = xx; *p;
值传递,指针传递
堆栈
- 栈:
- 用完就释放
- 内存是自动申请的
- 内存连续的
- 堆
- java; 通过new 申请,如果没有任何引用指向这个对象,一定事件后,垃圾回收器会回收这个内存,不需要手动管理。
- c :
- malloc申请内存的。
- 参数:申请内存的代销
- 返回值:申请内存的起始地址,可以用来做一个指针。
- free 释放内存: 参数是这个指针(内存地址)
- malloc申请内存的。
数组
- char arr[] = “hello”;
- arr里放的就是这个数组第一个元素的地址。数组里元素的地址是连续的
- c里的字符串后边都有一个\0作为字符串结束符
方法指针
void (*tostr)();
声明一个方法的指针,这个指针可以接受一个返回值类型为void的方法的地址
结构体:
定义方法:
typedef struct{ //成员} 结构体名字;
在对象创建结构体。
结构体名字* p = malloc(sizeof(结构体名字));
调用:
假设,p是结构体Person的一个指针。
- (*p).age
- p->age //p-> 相当于 (*p).
自定义类型
- typedef 把一个数据类型起另外一个名字
- #define : 宏定义,不要分号。一般用来定义常量
定义bool属性
typedef char bool; #define true 1 #define false 0 int main() { bool a = true; bool b = false; if(a) { printf("true\n"); } if(!b) { printf("false\n"); } printf("%d\n", sizeof(bool)); system("pause"); }