【C语言】数据类型之结构体


前言

之前的数据都是单一的数据,如果某个数据节点包含很多个类型,比如学生信息,包含 名字(字符串),就很难表示
如double b; char str[20];等等
如何把这些数据组合构造一个类型:那就是结构体,即通过一个语法结构,将这 些数据类型包在一起,这样操作时就一块操作了,非常的方便


提示:以下是本篇文章正文内容,下面案例可供参考

一、创建结构体与基本的使用

创建
结构体的关键字为struct

struct Node//struct 为关键字  Node 为名字
{
	int a;//结构体成员
	double b;
	char* c;
};//末尾加上分号

创建结构体变量
在创建一个结构体变量时,需要加上关键字

下面为使用方法及注释

struct Node no; //声明结构体变量,类型名固定 
struct Node nd = {23,88.5,"小明"}; //依次初始化给成员 
struct Node ne = {"小明"}; //初始化部分元素,其他为 0 
struct Node* np = &nd; //指针对象指向合法空间

这样就初始化完毕了。

赋值和使用
使用:
我们指定,我们可以创建堆空间的变量,也可以创建栈空间的变量,
在使用结构体的时候会区分它们的使用方式
例如:

nd.a;//栈
np->c;//堆

二、指针成员的使用

指针成员:必须指向合法空间。
初始化的两种方式:

struct no
{
	int *p;
};
struct no n = {malloc(4)};//使用malloc初始化
int a=10;
struct no nn = {&a};//使用另一个变量的地址,只要是合法的

释放:

free(n.p);

三、结构体成员与函数成员

结构体成员:
只有指针才能指向当前结构体.
可以随便指向其他的结构体

struct Node
{
	int a;
};

struct Node2
{
	struct Node2 *next;
	struct Node n;
	struct Node *no;
};

成员函数:
结构体内不能放函数,但是可以放函数指针

void fun()
{
	printf("i am fun\n");
}

struct Node
{
	void (*pfun)();
}

四、结构体的大小之谜(一)

我们以为的是结构体内的元素大小相加就是结构体大小,但是看↓

//no中有int、double、char[10]我们以为的大小为:18
//但实际却是:32  所以我们先使用sizeof()取得大小,原理以后再讲
printf("%d", sizeof(no));
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

人才程序员

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值