第二部分—C语言提高篇_7. 结构体

7.1 结构体基础知识

7.1.1 结构体类型的定义

struct Person
{
	char name[64];
	int age;
};

typedef struct _PERSON
{
	char name[64];
	int age;
}Person;

注意:定义结构体类型时不要直接给成员赋值,结构体只是一个类型,编译器还没有为其分配空间,只有根据其类型定义变量时,才分配空间,有空间后才能赋值。

7.1.2 结构体变量的定义

struct Person
{
	char name[64];
	int age;
}p1;                            //定义类型同时定义变量


struct
{
	char name[64];
	int age;
}p2;                            //定义类型同时定义变量


struct Person p3;               //通过类型直接定义

7.1.3 结构体变量的初始化

struct Person
{
	char name[64];
	int age;
}p1 = {"john",10};                  //定义类型同时初始化变量

struct
{
	char name[64];
	int age;
}p2 = {"Obama",30};                 //定义类型同时初始化变量

struct Person p3 = {"Edward",33};   //通过类型直接定义

7.1.4 结构体成员的使用

struct Person
{
	char name[64];
	int age;
};

void test()
{
	struct Person p1;                        //在栈上分配空间
	strcpy(p1.name, "John");
	p1.age = 30;
	printf("%s %d\n", p1.name, p1.age);      //如果是普通变量,通过点运算符操作结构体成员

	//在堆上分配空间
	struct Person* p2 = (struct Person*)malloc(sizeof(struct Person));
	strcpy(p2->name, "Obama");
	p2->age = 33;
	printf("%s %d\n", p2->name, p2->age);    //如果是指针变量,通过->操作结构体成员
}

输出结果

John 30
Obama 33

7.1.5结构体赋值

7.1.5.1 赋值基本概念

相同的两个结构体变量可以相互赋值,把一个结构体变量的值拷贝给另一个结构体,这两个变量还是两个独立的变量。

struct Person
{
	char name[64];
	int age;
};

void test()
{
	//在栈上分配空间
	struct Person p1 = { "John" , 30};
	struct Person p2 = { "Obama", 33 };
	printf("%s %d\n", p1.name, p1.age);
	printf("%s %d\n", p2.name,
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值