位域的使用位域的使用和結構成員的使用相同,其一般形式為: 位域變量名·位域名 位域允許用各種格式輸出。
main(){
struct bs
{
unsigned a:1;
unsigned b:3;
unsigned c:4;
} bit,*pbit;
bit.a=1;
bit.b=7;
bit.c=15;
printf("%d,%d,%d\n",bit.a,bit.b,bit.c);
pbit=&bit;
pbit->a=0;
pbit->b&=3;
pbit->c|=1;
printf("%d,%d,%d\n",pbit->a,pbit->b,pbit->c);
}
上例程序中定義了位域結構bs,三個位域為a,b,c。說明了 bs類型的變量bit和指向bs類型的指針變量pbit。這表
示位域也是可以使用指針的。
程序的9、10、11三行分別給三個位域賦值。( 應注意賦值不能超過該位域的允許范圍)程序第12行以整型量格式輸
出三個域的內容。第 13行把位域變量 bit的地址送給指針變量 pbit。第 14行用指針方式給位域 a重新賦值,賦為0。
第15行使用了復合的位運算符"&=", 該行相當于: pbit->b=pbit->b&3位域b中原有值為7,與3作按位與運算的
結果為3(111&011=011,十進制值為3)。同樣,程序第16行中使用了復合位運算"|=",相當于: pbit->c=pbit->c|1
其結果為15。程序第 17行用指針方式輸出了這三個域的值。
類型定義符typedef
C語言不僅提供了豐富的數(shù)據(jù)類型,而且還允許由用戶自己定義類型說明符,也就是說允許由用戶為數(shù)據(jù)類型取“別
名”。 類型定義符typedef即可用來完成此功能。例如,有整型量a,b,其說明如下: int aa,b; 其中int是整型變
量的類型說明符。int的完整寫法為integer,
為了增加程序的可讀性,可把整型說明符用 typedef定義為: typedef int INTEGER 這以后就可用 INTEGER來代替
int作整型變量的類型說明了。 例如: INTEGER a,b;它等效于: int a,b; 用typedef定義數(shù)組、指針、結構等類
型將帶來很大的方便,不僅使程序書寫簡單而且使意義更為明確,因而增強了可讀性。例如:
typedef char NAME[20]; 表示 NAME是字符數(shù)組類型,數(shù)組長度為20。
然后可用NAME 說明變量,如: NAME a1,a2,s1,s2;完全等效于: char a1[20],a2[20],s1[20],s2[20]
又如:
typedef struct stu{ char name[20];
int age;
char sex;
} STU;
定義 STU表示 stu的結構類型,然后可用 STU來說明結構變量: STU body1,body2;
typedef定義的一般形式為: typedef 原類型名 新類型名 其中原類型名中含有定義部分,新類型名一般用大寫表示,
以
便于區(qū)別。在有時也可用宏定義來代替 typedef的功能,但是宏定義是由預處理完成的,而typedef則是在編譯時完
成的,后者更為靈活方便。
2015年全國職稱計算機考試教材(2007模 .. 定價:¥225 優(yōu)惠價:¥213 更多書籍 | |
全國職稱計算機考試速成過關系列套裝:W .. 定價:¥133 優(yōu)惠價:¥133.0 更多書籍 |