C語言 結構

2021-08-17 06:25:34 字數 2078 閱讀 2521

結構

結構是乙個或多個變數的集合,這些變數可能為不同的型別,為了處理的方便而將這些變數組織在乙個名字之下。

結構的宣告方式:

//宣告乙個結構

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 結構存在的意義 存在是合理的,許多事物的存在是在不斷解決問題引入的,當然有更好的方法出現時改變也是合理的。在實際問題中,一組資料往往具有不同的資料型別。例如,在學生登記表中,姓名應為字元型,學號可為整型或字元型,年齡應為整型,性別應為字元型,成績可為整型或實型。顯然不能用乙...