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
0
二维码
打赏
海报
Android NDK基础7:C_typedef_联合体_枚举
typedef 类型取别名
//typedef 类型取别名
//1.不同名称代表在干不同的事情typedef int jint;
//2.不同情况下,使用不同的别名
/*
#if defined(__cplusplus)……
文章目录
关闭
共有 0 条评论