结构体的基本使用

  1. 如果有typedef 定义结构体,那么后面跟着的单词是类型的别名
    typedef struct Person
    {
    	char name[64];
    	int age; //不要在定义结构体时候赋初值
    } myPerson;//myPerson是struct Person 类型的别名
    
    void test01()
    {
    	myPerson p = { "aa", 10 };
    }

  2. 没有typedef,定义结构体,后面跟着的单词是一个结构体变量
    struct Person2
    {
    	char name[64];
    	int age;
    } myPerson2 = {"bbb" , 200}; //myPerson是一个结构体变量
    
    void test02()
    {
    	printf("姓名: %s 年龄: %d\n", myPerson2.name, myPerson2.age);
    	myPerson2.age = 100;
    	strcpy(myPerson2.name, "aaa");
    
    	printf("姓名: %s 年龄: %d\n", myPerson2.name, myPerson2.age);
    }
    
    //匿名类型,后期无法使用
    struct
    {
    	char name[64];
    	int age;
    }myPerson3 = {"ccc" , 30};
    
    void test03()
    {
    	printf("姓名: %s 年龄: %d\n", myPerson3.name, myPerson3.age);
    }

  3. 结构体数组
    1. 在栈上开辟
    2. 在堆区开辟
void test04()
{
	//在栈上创建结构体变量
	struct Person p1 = { "aaa", 10 };

	//在堆区创建结构体变量
	struct Person *p2 = malloc(sizeof(struct Person));
	p2->age = 100;
	strcpy(p2->name, "bbb");
}
void printArray( struct Person persons[] , int len)
{
	for (int i = 0; i < len;i++)
	{
		printf("姓名:%s  年龄 %d\n", persons[i].name, persons[i].age);
	}
}


void test05()
{
	//结构体变量数组
	//在栈上创建
	struct Person persons[] =
	{
		{ "aaa", 10 },
		{ "bbb", 20 },
		{ "ccc", 30 },
		{ "ddd", 40 },
	};

	/*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++)
	{
		sprintf(personArr[i].name, "name_%d", i);
		personArr[i].age = i + 18;
	}
	printArray(personArr, 4);

	if (personArr != NULL)
	{
		free(personArr);
		personArr = NULL;
	}
}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值