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

typedef 类型取别名

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
//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();
}

联合体(共用体)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
//联合体(共用体)
//不同类型的变量共同占用一段内存(相互覆盖),联合变量任何时刻只有一个成员存在,节省内存
//联合体变量的大小=最大的成员所占的字节数
//比喻:同穿一条裤子
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");
}
1
2
3
4
5
6
7
8
9
10
11
typedef union jvalue {
jboolean z;
jbyte b;
jchar c;
jshort s;
jint i;
jlong j;
jfloat f;
jdouble d;
jobject l;
} jvalue;

枚举

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
//枚举(列举所有的情况)
//限定值,保证取值的安全性
//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();
}

Powered by AppBlog.CN     浙ICP备14037229号

Copyright © 2012 - 2020 APP开发技术博客 All Rights Reserved.

访客数 : | 访问量 :