【C语言】结构体



 

 

 

struct 类型名    自定义数据类型,定义完成以后,等同于内置类型

 

 

1.结构体不能定义一个包含自身的普通成员,但可以定义一个指向自身的指针

 

 

 

struct A
{
	int a;
	char b;
	struct A c;//error 结构体不能定义一个自身的普通成员变量
	struct A *p;//ok 结构体可以定义一个指向自己的指针  //链表
};

 

 

 

 

2.     结构体普通变量通过“.”号访问它的成员
       结构体指针变量通过“->”号访问它的成员
       有两个自带*(解引用)的符号“->,[ ]”

 

 

 

#include <stdio.h>
#include <string.h>

struct Student
{
	char name[20];
	int age;
};

void Show(struct Student stu)
{
	printf("%s,%d\n",stu.name,stu.age);
	stu.age = 0;  //修改失败,因为不满足1.传指针 2.解引用
}

void Show1(struct Student *pstu)
{
	printf("%s,%d\n",pstu->name,pstu->age);
	pstu->age = 0;   //修改成功值为0,子函数想要修改父函数的值必须满足1.传指针 2.解引用,成立
	                 //为了避免修改,可以在struct前面加const,屏蔽pstu->age = 0
}

int main()
{
	struct Student stu1;
	struct Student stu2 = {"liubei",25};
	struct Student stu3 = {"caocao"};//0,聚合类型只初始化一部分则剩余部分为0
	stu3.age = 30;

	//stu3.name = "sunquan";//error   //字符串不能直接赋值!
	strcpy(stu3.name,"sunquan");   //ok

	struct Student *pstu = &stu2;
	//int *p = &a;
	//(*pstu).age = 35;
	pstu->age = 35;
	strcpy(pstu->name,"zhangfei");
	Show(stu2);
	Show(stu2);
	Show1(&stu2);
	Show1(&stu2);   //值为0,子函数想要修改父函数的值必须满足1.传指针 2.解引用

	return 0;
}

 

 

 

 

 

 

 

 

 

 

 

 

 

 

typedef  数据类型   新数据类型

 

 

 

 

去掉typedef,查看定义的类型变量,然后加上typedef就由该类型的变量提升为该类型

 

typedef int Arr[10];  //定义了整型数组类型

int main()
{
	int a[10];  //定义了整型数组变量
	int b[10];
	a[5] = 10;
	b[3] = 30;
	printf("%d\n",sizeof(a)); //40
	printf("%d\n",sizeof(b)); //40
}

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值