W3Cschool
恭喜您成為首批注冊用戶
獲得88經(jīng)驗值獎勵
C可以通過a通過多個不同的變量共享相同的存儲器區(qū)域聯(lián)盟。
聯(lián)合通常以與結(jié)構(gòu)相同的方式給予標(biāo)簽名稱。
您可以使用關(guān)鍵字union來定義聯(lián)合。
例如,以下語句聲明由三個變量共享的聯(lián)合:
union U_example { float decval; int *pnum; double my_value; } u1;
此語句聲明具有標(biāo)記名稱U_example的聯(lián)合,其在decval,pnum和my_value。
該語句還定義了具有變量名u1的聯(lián)合的一個實例。
您可以使用如下語句聲明此聯(lián)合的其他實例:
union U_example u2, u3;
聯(lián)盟成員的訪問方式與結(jié)構(gòu)成員的訪問方式完全相同。
例如,要為u1和u2的成員分配值,可以寫為:
u1.decval = 2.5; u2.decval = 3.5*u1.decval;
聯(lián)合的實例的大小是最大成員所需的內(nèi)存。
#include <stdio.h>
// ww w . ja va2s . com
typedef union UDate UDate;
typedef struct Date Date;
typedef struct MixedDate MixedDate;
typedef struct NumericDate NumericDate;
void print_date(const Date* date); // Prototype
enum Date_Format{numeric, text, mixed}; // Date formats
struct MixedDate {
char *day;
char *date;
int year;
};
struct NumericDate {
int day;
int month;
int year;
};
union UDate {
char *date_str;
MixedDate day_date;
NumericDate nDate;
};
struct Date {
enum Date_Format format;
UDate date;
};
int main(void) {
NumericDate yesterday = { 11, 11, 2020};
MixedDate today = {"Monday", "12th November", 2020};
char tomorrow[] = "Tues 13th Nov 2020";
// Create Date object with a numeric date
UDate udate = {tomorrow};
Date the_date;
the_date.date = udate;
the_date.format = text;
print_date(&the_date);
// Create Date object with a text date
the_date.date.nDate = yesterday;
the_date.format = numeric;
print_date(&the_date);
// Create Date object with a mixed date
the_date.date.day_date = today;
the_date.format = mixed;
print_date(&the_date);
return 0;
}
void print_date(const Date* date) {
switch(date->format) {
case numeric:
printf_s("The date is %d/%d/%d.\n", date->date.nDate.day,
date->date.nDate.month,
date->date.nDate.year);
break;
case text:
printf_s("The date is %s.\n", date->date.date_str);
break;
case mixed:
printf_s("The date is %s %s %d.\n", date->date.day_date.day,
date->date.day_date.date,
date->date.day_date.year);
break;
default:
printf_s("Invalid date format.\n");
}
}
上面的代碼生成以下結(jié)果。
Copyright©2021 w3cschool編程獅|閩ICP備15016281號-3|閩公網(wǎng)安備35020302033924號
違法和不良信息舉報電話:173-0602-2364|舉報郵箱:jubao@eeedong.com
掃描二維碼
下載編程獅App
編程獅公眾號
聯(lián)系方式:
更多建議: