//结构体 #define _CRT_SECURE_NO_WARNINGS #include<stdio.h> #include<stdlib.h> #include<string.h> //结构体是一种构造数据类型,用途把不同的数据组合成一个整体 //结构体变量数据大,作为参数的时候一般会使用结构体指针传参 //结构体类型不分配内存,不能赋值,存取,运算 struct nameinfo{ int num; char name[40]; }d1,d2[9],*d3;//结构体的定义① //匿名结构体,用于限制该结构体的数量,只给某些有权限的使用 struct { int snum; char sname[40]; }sd1;//匿名结构体,必须在定义的时候就创建变量,其他条件下无法创建 struct mao{ char ch; int a[10]; }; struct gou{ int num; char name[10]; }; struct lang{ int num; double longnum; char name[10]; }; void main9(){ //结构体的定义② struct nameinfo info; //结构体赋值 info.num = 1; strcpy(info.name, "小米");//数组不可以直接赋值 printf("结构体的成员变量num=%d,name=%s ", info.num, info.name); //结构体赋值② struct nameinfo d4 = { 2, "华为" }; //注意:结构体变量用大括号赋值,只有在创建并初始化的时候才可以 //d1 = { 2, "华为" }; 错误 不可如此赋值 //结构体指针 struct nameinfo *p = NULL; //结构体指针的初始化① p = &info; p->num = 2;//结构体指针的赋值 strcpy((*p).name, "雷云"); printf("结构体的成员变量num=%d,name=%s ", (*p).num, p->name); //结构体指针的初始化② struct nameinfo *p1 = NULL; p1 = (struct nameinfo *)malloc(sizeof(struct nameinfo)); p1->num = 3; strcpy((*p1).name, "马化腾"); printf("结构体的成员变量num=%d,name=%s ", (*p1).num, p1->name); //结构体字节对齐原则--见C语言 结构体(联合体)对齐规则 printf("结构体mao的大小是%d ", sizeof(struct mao)); printf("结构体gou的大小是%d ", sizeof(struct gou)); printf("结构体lang的大小是%d ", sizeof(struct lang)); system("pause"); }