从Android/Java基础之上学习C/C++语言(6)--C语言基础--联合体与枚举
来源:互联网 发布:二当家的官网源码下载 编辑:程序博客网 时间:2024/06/05 16:07
前言
NDK开发需要用到C/C++语言,为什么需要这两个语言?因为通过NDK开发能够解决Java做不到或者Java做的话效率、安全性会很低的问题。比如说视频处理(直播)、GIF的处理(需要对内存进行大量地分配和释放)、支付SDK(安全性)等。
学习NDK能够大大开阔我们的视野,NDK是一些大公司都要求掌握的技术,因此很有学习的必要。
本系列介绍的是NDK开发里面会用到的C/C++语言知识,其他的知识暂时不作介绍。这里并不会从零开始介绍,而是在学习了Java的基础之上来学习,这样能够大大提高我们的效率,又能反过来更加深刻地理解Java的机制。要求读者最好有一定(最基本的)Java语言(编程语言)基础
联合体(共用体)
不同类型的变量共同占用一段内存(相互覆盖),联合变量任何时刻只有一个成员存在,节省内存
联合体变量的大小=最大的成员所占的字节数(字节对齐 )
比喻:同穿一条裤子
union MyValue{ int x; int y; double z;};void main(){ union MyValue v; v.x = 90; v.y = 100; //最后一次赋值有效 v.z = 23.8; printf("%d,%d,%lf\n", v.x, v.y, v.z); system("pause");}
JNI头文件中的联合体:
typedef union jvalue { jboolean z; jbyte b; jchar c; jshort s; jint i; jlong j; jfloat f; jdouble d; jobject l;} jvalue;
枚举(enumeration)
枚举(列举所有的情况),限定值的取值范围,保证取值的安全性。
enum Day{ Monday, Tuesday, Wednesday, Thursday, Friday, Saturday, Sunday};void main(){ enum Day d = Tuesday; printf("%#x,%d\n", &d, d); system("pause");}
阅读全文
0 0
- 从Android/Java基础之上学习C/C++语言(6)--C语言基础--联合体与枚举
- 从Android/Java基础之上学习C/C++语言(1)--C语言基础--基本数据类型
- 从Android/Java基础之上学习C/C++语言(2)--C语言基础--指针
- 从Android/Java基础之上学习C/C++语言(3)--C语言基础--内存分配
- 从Android/Java基础之上学习C/C++语言(4)--C语言基础--字符串
- 从Android/Java基础之上学习C/C++语言(5)--C语言基础--结构体
- 从Android/Java基础之上学习C/C++语言(7)--C语言基础--IO
- 从Android/Java基础之上学习C/C++语言(8)--C语言基础--预编译
- 从Android/Java基础之上学习C/C++语言 --目录
- C语言基础-联合体
- C语言基础及指针⑨联合体与枚举
- c语言基础(七)联合体和枚举
- (四)C语言基础(结构体,联合体,枚举,别名)
- C语言基础-结构体和联合体
- C语言基础-结构体和联合体
- C语言基础--结构和联合体
- C语言基础-结构体和联合体(ZZ)
- C语言基础:枚举.宏
- 在做项目时添加看门狗一个好的办法
- 线段树模板
- Spring Boot支持Undertow服务器,支持http、https(ssl、tls)双协议,支持双端口
- 新手开发中常用ES6基础知识总结
- Upload
- 从Android/Java基础之上学习C/C++语言(6)--C语言基础--联合体与枚举
- C语言实现CRC32算法
- TORCS无人驾驶笔记
- 滑动内联动效的实现之图片平行逆差效果
- 指针与数组
- SOFM 网络的MATLAB实现
- 我们为什么要尝试前后端分离
- JPA学习笔记(6)——EntityTransaction
- js跳转到新页面传参以及接收参数的方法