結構體的總結

2021-09-29 08:56:05 字數 2625 閱讀 2736

結構體的基本概念 

#define _crt_secure_no_warnings

#include #include #includetypedef struct personmyperson;//myperson是struct person型別的別名

void test01();

}struct person2 myperson2=;

void test02()

void test03();

//在堆上建立結構體變數

struct person *p2 = malloc(sizeof(struct person));

p2->age = 100;

strcpy(p2->name,"ddddd");

printf("姓名:%s 年齡 %d\n",p2->name, p2->age);

}void printarray(struct person persons,int len)

}void test04(),

, ,

};int len = sizeof(persons) / sizeof(struct person);

printarray(persons,len);

//在堆區建立

struct person *personarr = malloc(sizeof(struct person)*4);

for (int i = 0; i < 4; i++)

printarray(personarr,4);

if (personarr!=null) }

int main()

結構體賦值的問題

#define _crt_secure_no_warnings

#include #include #includestruct person

;void test01();

struct person p2 = ;

p1 = p2;

printf("p1的姓名:%s 年齡:%d\n",p1.name,p1.age); //jerry 20

printf("p2的姓名:%s 年齡:%d\n", p2.name, p2.age); //jerry 20

}struct person2

;void test02()

p1.name = malloc(strlen(p2.name)+1);

strcpy(p1.name,p2.name);

p1.age = p2.age;

printf("p1的姓名: %s 年齡: %d\n", p1.name, p1.age);

printf("p2的姓名: %s 年齡: %d\n", p2.name, p2.age);

if (p1.name!=null)

if (p2.name!=null) }

int main()

結構體巢狀一級指標

#define _crt_secure_no_warnings

#include #include #includestruct person

;struct person **allocatespace()

return parray;

}void printarray(struct person **parray,int len)

}void freespace(struct person **parray,int len)

//釋放結構體

free(parray[i]);

parray[i] = null;

} //釋放陣列

free(parray);

parray = null;

}void test01()

int main()

結構體的偏移量

#define _crt_secure_no_warnings

#include #include #include#includestruct person;

void test01()

//通過偏移量 獲取到資料

void test02();

printf("p.b=%d\n",*(int *)((char*)&p1+offsetof(struct person,b)));

printf("p.b=%d\n",*(int *)((int*)&p1+1));

}//結構體巢狀結構體

struct person2;

void test03();

int offset1 = offsetof(struct person2,c);

int offset2 = offsetof(struct person,b);

//printf("%d\n %d\n",offset1,offset2);

printf("%d\n",*(int *)((char *)&p+offset1+offset2));

printf("%d\n",((struct person *)((char*)&p+offset1))->b);

}int main()

結構體的簡單總結

結構體與鍊錶 1 結構體的概念 a 陣列可以定義變數集合,所有的元素都只能有乙個型別 b 結構體也可以定義變數集合,任何成員都可以是不同型別 c 通常陣列內部變數叫做元素,結構體內部變數叫成員 d 使用結構體定義的變數也叫物件 2 定義結構體 注意結構體結尾處要有 struct 結構體名 型別識別符...

結構體知識總結

struct b關於結構體,我們一定不會陌生,結構體可以說和類的用法類似,但是也有不同之處,總的來說,結構體的使用使我們可以更加方便的儲存和使用資料。我在上面就定義了乙個結構體,裡面有兩個元素,乙個是int型別的,乙個是char型別的,因此,結構體裡面可以放進去不同型別的資料,這跟結構體的空間開闢有...

結構體複習總結

結構體 先簡單的介紹一下結構體 結構體是一種型別,是一些值的集合,這些值稱為成員變數。結構體的每個成員可以是不同型別的變數。1.結構體型別的建立 struct stua,p 這裡stu是結構體名稱,a是結構體變數,p是指向結構體的指標。在建立結構體時,結構體名稱不能省略,否則無法引用結構體。在定義結...