結構體1(巢狀使用)

2022-07-12 19:03:09 字數 1364 閱讀 5654

1.結構體巢狀

<1>指向結構體的指標:struct student *p;  struct student student1;    p=&student1;    

訪問結構體變數成員的方式:p->age;(*p).age;sudent1.age;

<2>乙個結構體做另乙個結構體的成員

#include

#include

#include

typedef struct item

item;

typedef struct node

node;

void main()

<3>乙個結構體指標做另乙個結構體的成員

#include

#include

#include

typedef struct item

item;

typedef struct node

node;

void main()

注意:<1>不能將結構體變數作為乙個整體輸入,輸出,只能對其各個成員進行;

<2>允許將乙個結構體變數賦給另乙個用型別的結構體變數: student1=student2;       

<3>結構體陣列與陣列不一樣,乙個結構的名字不是該結構的位址。

<4>建立鍊錶時,main()裡的queue queue;不要定義為指標,若要定義為指標,須為其分配儲存空間。

或者傳遞指標的指標(最好不用這種),否則不能改變指標的值。

3.用指標處理鍊錶:struct student ;

處理動態鍊錶所需函式:標頭檔案stdlib.h中有malloc()free()的原型

void * malloc (unsigned int size);

//在動態儲存區中分配乙個長度為size的連續空間,此函式的值是乙個分配域的起始位址(型別為 void)。如果函式為能成功執行則返回null;

void *calloc(unsigned n,unsinged size);

//在動態儲存區中分配n個長度為size的連續空間,此函式的值是乙個分配域的起始位址。如果函式為能成功執行則返回null;用calloc函式可以為一維陣列開闢動態儲存空間。

void free(void *p) ;//釋放由p指向的動態儲存區,p是最近一次呼叫malloc或calloc時返回的值。

ptr=(int *)malloc(n*sizeof(int));n為一變數,c99之前允許,返回一指向int型的ptr=(int *)calloc(100,sizeof(int));

4.向函式傳遞結構資訊

<1>傳遞結構成員

<2>使用結構位址

<3>把結構作為引數傳遞

結構體巢狀結構體名

結構體巢狀結構體名 前一段時間在看ddk中例子的時候,看到這樣的的結構體定義 typedef struct common device data common device data,pcommon device data typedef struct pdo device data pdo dev...

結構體中巢狀結構體

結構體的巢狀問題 結構體的自引用 self reference 就是在結構體內部,包含指向自身型別結構體的指標。結構體的相互引用 mutual reference 就是說在多個結構體中,都包含指向其他結構體的指標。1.1不使用typedef時 錯誤的方式 struct tag 1 這種宣告是錯誤的,...

Go結構體巢狀

package main import fmt 結構體巢狀 結構體巢狀 乙個結構體中的字段,是另乙個結構體型別 has a func main b1.bookname 西遊記 b1.price 45.8 s1 student s1.name 小明 s1.age 21 s1.book b1 fmt.p...