C语言里结构体的问题。结构体定义指针类型是怎么回事?

 我来答
惠企百科
2022-12-14 · 百度认证:北京惠企网络技术有限公司官方账号
惠企百科
惠企百科网是一家科普类综合网站,关注热门中文知识,集聚互联网精华中文知识,本着自由开放、分享价值的基本原则,向广大网友提供专业的中文知识平台。
向TA提问
展开全部

您好,您的问题是不是有点略多,下面一一为您解答:

1、typedefchar**HuffmanCode实际上是typedef(char*)*HuffmanCode。写成这种形式更好理解,**HuffmanCode是指向指针的指针,这里也可以理解为是指向字符串的指针,因为char*字符数组相当于字符串。

2、*HuffmanTree表示指向结构体HTNode的指针,HTNode是typedef语法指定的结构体的别名,然后*HuffmanTree是在定义结构体的同时定义了指向结构体的指针。

3、指针只是一个地址,HuffmanTree作为结构体指针同样是一个地址,因此不存在它内部有4个变量一说。严格意义上讲是HuffmanTree这个指针指向的结构体中有这4个变量,而这4个变量和在main函数里定义的普通变量一样,都占用实际内存,在新建结构体的同时为这4个变量分配内存空间。

4、HT=(HuffmanTree)malloc((m+1)*sizeof(HTNode))。这个是malloc的语法,该语句的含义是分配m+1个HTNode结构体占用的内存,将分配的内存地址赋给HT。sizeof作用是判断某个类型所占用的内存空间,此处是计算HTNode占用的空间大小,然后(m+1)*sizeof(HTNode)表示m+1个HTNode,malloc是请求分配内存,(HuffmanTree)是强制类型转化,将得到的内存地址强制转化为HuffmanTree(即HTNode指针类型)。

5、malloc是C语言中常用的动态分配内存的语法,划重点“动态”,当你需要动态申请内存时(例如给数组扩容,还有此处的为结构体申请空间)时用到该语法,C语言中内存相关语法还有realloc,free可以自行了解一下。在C++中new和delete更为常用。

推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式