若ListofChar是指向Char的指针,void report(ListofChar chars)中chars的含义是什么?
关于ListofChar作为函数参数的含义解析
咱们先从你给出的代码里的类型定义部分拆解,就能把这个问题说清楚:
首先看这段关键的typedef代码:
typedef struct charact Char; typedef Char * ListofChar;
这里typedef Char * ListofChar的作用,就是把ListofChar定义成指向Char(也就是struct charact结构体)的指针类型的别名。
那回到函数声明void report(ListofChar chars):
- 这里的参数
chars,本质上就是Char* chars的等价写法,也就是一个指向struct charact结构体的指针变量。因为ListofChar本身就是指针类型的别名,所以chars确实就是ListofChar类型的指针——你这个判断是完全正确的。
结合结构体里的next指针来看,这个chars应该是用来传递一个字符统计链表的头节点地址,report函数可以通过它遍历整个链表,输出字符和出现次数这类信息。
另外可以对比一下另一个函数void letters(char name[50], ListofChar * chars_ptr),这里的chars_ptr是指针的指针(等价于Char** chars_ptr),用来在函数内部修改链表的头指针;而report里的chars只是单层指针,只能读取/遍历链表,没法修改链表的头节点本身。
内容的提问来源于stack exchange,提问作者Sun Voyager
相关产品推荐
相关产品推荐

