//结构体
#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\n", 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\n", (*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\n", (*p1).num, p1->name);
//结构体字节对齐原则--见C语言 结构体(联合体)对齐规则
printf("结构体mao的大小是%d\n", sizeof(struct mao));
printf("结构体gou的大小是%d\n", sizeof(struct gou));
printf("结构体lang的大小是%d\n", sizeof(struct lang));
system("pause");
}
![]()