Android NDK開發之旅6 C語言基礎 聯合體與列舉

小楠總發表於2017-12-18

###聯合體(共用體)

不同型別的變數共同佔用一段記憶體(相互覆蓋),聯合變數任何時刻只有一個成員存在,節省記憶體

聯合體變數的大小=最大的成員所佔的位元組數(位元組對齊 )

比喻:同穿一條褲子

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");
}
複製程式碼

如果覺得我的文字對你有所幫助的話,歡迎關注我的公眾號:

公眾號:Android開發進階

我的群歡迎大家進來探討各種技術與非技術的話題,有興趣的朋友們加我私人微信huannan88,我拉你進群交(♂)流(♀)

相關文章