Android NDK基础7:C_typedef_联合体_枚举

typedef 类型取别名

//typedef 类型取别名
//1.不同名称代表在干不同的事情typedef int jint;  
//2.不同情况下,使用不同的别名
/*
#if defined(__cplusplus)
typedef _JNIEnv JNIEnv;
typedef _JavaVM JavaVM;
#else
typedef const struct JNINatuveInterface* JNIEnv;
typedef const struct JNIInvokeInterface* JavaVM;
#endif
*/
//3.书写简洁

struct Man {
    char name[20];
    int age;
};

//Age int类型的别名
typedef int size;
//Age int类型指针的别名
typedef int* size_p;

//结构体取别名
typedef struct Man Man;
typedef struct Man* ManP;

//typedef struct Woman W;
//typedef struct Woman* WP;

//简写
typedef struct Woman {
    char name[20];
    int age;
} W, *WP;  //W 是woman结构体的别名, WP 是woman结构体指针的别名

void main() {
    size i = 5;
    size_p p = &i;

    //结构体变量
    W w = {"Rose", 20};
    //结构体指针
    WP wp = &w;
    printf("%s,%d\n", w.name, w.age);
    printf("%s,%d\n", wp->name, wp->age);

    getchar();
}

联合体(共用体)

//联合体(共用体)
//不同类型的变量共同占用一段内存(相互覆盖),联合变量任何时刻只有一个成员存在,节省内存
//联合体变量的大小=最大的成员所占的字节数
//比喻:同穿一条裤子
union MyValue {
    int x;
    int y;
    double z;
};

void main() {
    union MyValue d;
    d.x = 90;
    d.y = 100;  //最后一次赋值有效
    //d.z = 23.8;

    printf("%d,%d,%lf\n", d.x, d.y, d.z);
    system("pause");
}
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 = 0,
//    Tuesday = 1,
//    Wednesday = 2,
//    Thursday = 3,
//    Friday = 4,
//    Saturday = 5,
//    Sunday = 6
//};
/*
enum Day
{
    Monday,
    Tuesday,
    Wednesday,
    Thursday,
    Friday,
    Saturday,
    Sunday
};

void main() {
    //枚举的值,必须是括号中的值
    //枚举的值,在内存空间上是不连续的
    enum Day d = Monday;
    printf("%#x,%d\n", &d, d);

    getchar();
}

版权声明:
作者:Joe.Ye
链接:https://www.appblog.cn/index.php/2023/02/25/android-ndk-basic-c-typedef-consortium-enumeration/
来源:APP全栈技术分享
文章版权归作者所有,未经允许请勿转载。

THE END
分享
二维码
打赏
海报
Android NDK基础7:C_typedef_联合体_枚举
typedef 类型取别名 //typedef 类型取别名 //1.不同名称代表在干不同的事情typedef int jint; //2.不同情况下,使用不同的别名 /* #if defined(__cplusplus)……
<<上一篇
下一篇>>
文章目录
关闭
目 录