从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
原创粉丝点击