結構
結構是乙個或多個變數的集合,這些變數可能為不同的型別,為了處理的方便而將這些變數組織在乙個名字之下。
結構的宣告方式:
//宣告乙個結構
struct point;
//宣告三個結構,類似與int a,b,c
struct a,b,c;
//給結構賦初值
struct point maxpt = ;
結構取值:結構名.變數名
struct point;
struct point pt;
pt.x;
pt.y;
結構中的結構:
struct point;
struct rect;
struct rect screen ;
screen.pt1.x;
結構與函式
結構的合法操作
通過&運算子取位址。
訪問結構的成員。
可以通過賦值進行初始化。
傳遞結構的的結構成員
struct point;
struct rect;
//通過x,y構造乙個點
struct point makepoint(int x,int y)
//將兩個點相加
struct point addpoint(struct point p1, struct point p2)
//如果p點在矩形內,則返回1,否則返回0
int ptinrect(struct point p, struct rect r)
//返回規範形式的矩形
#define min(a,b) ((a) < (b) ? (a) : (b))
#define max(a,b) ((a) > (b) ? (a) : (b))
struct rect canonrect(struct rect r)
int main(int argc, char *argv)
結構指標
struct point origin, *pp;
pp = &origin;
printf("%d,%d",(*pp).x,(*pp).y);
printf("%d,%d",pp->x,pp->y);
struct rect r,*rp = &r;
//針對以上宣告,以下四個表示式等價。
r.pt1.x
;rp->pt1.x
;(r.pt1).x
;(rp->pt1).x
;
優先順序
struct *p;
++p->len;//等價於++(p->len)
->的優先順序比*高
*p->str
//讀取的是指標str所指向的物件的值。
結構陣列
struct keytab = ;
另外一種方式,可以將初值放在大括號內。
struct keytab = ,
,};
結構體的記憶體分配
struct p p;
struct ppppp;
printf("%d", sizeof(ppp));//24
聯合
聯合是可以(在不同時刻)儲存不同型別和長度的物件和變數,編譯器負責跟蹤物件的長度和對齊要求。
//假設乙個常量可能是int、float、char型別
union u_tag u;
C語言結構
1 任何乙個c語言程式都必須包括以下格式 main 這是c語言的基本結構,任何乙個程式都必須包含這個結構。括號內可以不寫任何內容,那麼該程式將不執行任何結果。2 main 在c語言中稱之為 主函式 乙個c程式有且僅有乙個main函式,任何乙個c程式總是從main函式開始執行,main函式後面的一對圓...
c語言結構
struct complex product 定義乙個新的結構用於存放結果 product.real x.real y.real x.imag y.imag product.imag x.real y.imag x.imag y.real 根據公式計算兩個複數之積 return product 返回...
C語言結構體
1.1.1 結構概念 1 結構存在的意義 存在是合理的,許多事物的存在是在不斷解決問題引入的,當然有更好的方法出現時改變也是合理的。在實際問題中,一組資料往往具有不同的資料型別。例如,在學生登記表中,姓名應為字元型,學號可為整型或字元型,年齡應為整型,性別應為字元型,成績可為整型或實型。顯然不能用乙...