代码可正常运行但无法理解数组大小由来的技术问询
理解数组大小为12的原因
嘿,我来帮你理清楚这个数组大小的由来!先看你给出的代码片段:
#define PARAMS 12 char** parseFile(char* tmp[], char* location) { // 解析<location>路径下的文件,从中提取6组键值对 // 所有键值对均存储在tmp中,最终得到一个包含12个char指针的数组,每个指针指向一个存储键或值的char数组 // ... do { y... }
这里的逻辑其实很直接,核心是注释和宏定义的对应关系:
- 注释明确说明要提取6组键值对,而每组键值对必然包含两个独立部分:一个「键(key)」和一个「值(value)」。
- 那6组键值对总共需要的存储位置就是
6 × 2 = 12,这正好对应了#define PARAMS 12的数值。
简单来说:每一组键值对要占两个char指针的位置(一个存键的地址,一个存值的地址),6组累加下来就是12个指针位置,所以数组大小被定义为12。你觉得“本不该运行”,大概率是没把「键值对是两个独立元素」这个点和宏定义的数值关联起来——其实这个逻辑是完全自洽的。
内容的提问来源于stack exchange,提问作者ci7i2en4
相关产品推荐
相关产品推荐

