结构体指针数组

struct h
{
BTNode *TQ;
int level; 
}a[100],b,*c[3],*d; 

a是一个结构体数组,已经有100个节点了。不需要再分配空间了。
b是一个结构体变量,也已经有空间了,就和int b;已经有空间了一样。
c是一个指针数组,c也已经有空间了,有3个元素,但是这三个元素是还没有分配空间的指针,所以要用malloc分别为他们分配内存。
d是一个结构体指针,和int *d;一样还要为他分配内存空间;
其实结构体就可以理解为是一种和int这些一样的数据类型,它在定义变量和指针这方面的操作和基本数据类型是一样的。

比如:
struct name {
int data;
} na;
int ia;
这里的na是类型struct name;的一个变量。而ia是int类型的一个变量。
struct name* np;
int* ip;
这里的两个指针也是一样的,只是类型不同。
可以这样分配内存。
1. np = &na; ip = &ia;
2, np = (struct name*)malloc(sizeof(struct name));
ip = (int*)malloc(sizeof(int));

声明数组也是一样的。
比如:
struct name nArray[100];
int iArray[100];
iArray就是有100个int型的变量。
nArray也是一样的有100个struct name 这种类型的变量。

指针数组也是一样的。
struct name* npArray[10];
int* ipArray[10];
ipArray表示有10个整型的指针。
npArray表示有10个struct name类型的指针。

声明动态数组的方式也是一样的。
struct name* dyNArry;
int* dyIArray;

比如我们要申请100个节点的数组
dyNArray = (struct name*)malloc(100 * sizeof(struct name));
dyIArray = (int *)malloc(100 * sizeof(int));

其实数据结构就是我们自己定义的一种类型。所以在声明变量的时候和基本数据类型(比如:int)是没有什么分别。
如果你觉得struct name的类型名称太长了。你可以用typedef来定义
例如: typedef struct name Name;
以后就直接用Name做类型名称就可以了
  • 7
    点赞
  • 16
    收藏
  • 打赏
    打赏
  • 1
    评论

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

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
©️2022 CSDN 皮肤主题:游动-白 设计师:我叫白小胖 返回首页
评论 1

打赏作者

win9zz

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

¥2 ¥4 ¥6 ¥10 ¥20
输入1-500的整数
余额支付 (余额:-- )
扫码支付
扫码支付:¥2
获取中
扫码支付

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

打赏作者

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

抵扣说明:

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

余额充值