请教一个char*强制转换成char**的问题,请高手帮忙!!

lfxyan 2013-03-15 05:51:26
#define CHILD(n,i) (*((char **)(n) + i))


char *bucketIndexNode;

bucketIndexNode = CHILD (bucketIndexNode, 5);

请我这个宏定义是什么意思,把char*强制转换成char**
...全文
288 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
feiyuren 2013-03-17
  • 打赏
  • 举报
回复
引用 9 楼 lfxyan 的回复:
你说的是对bucketIndexNode求纸吧?可是把bucketIndexNode强制转换成char**并不等同于&bucketIndexNode吧?
相当不一样,bucketIndexNode转换成char**只是为了类型匹配,使(*((char **)(n) + i))整个表达式的类型为char* &bucketIndexNode是指bucketIndexNode指针的地址,在这个式子里要操作的是bucketIndexNode指向的地方而不是它的地址
lfxyan 2013-03-17
  • 打赏
  • 举报
回复
引用 6 楼 Lost_In_Code 的回复:
引用 2 楼 feiyuren 的回复:按地址+偏移的方法寻找下一处位置 如果bucketIndexNode指向一个链表或树结构体节点的话 这个宏就是访问bucketIndexNode的下一个节点 和bucketIndexNode = bucketIndexNode->next;等价 确实是使用地址加偏转的方法找下个位置。宏的实现是#define CHIL……
可是我强制转换了一下,把char*转换成char**,就相当于把char变量当做一个char*了,那个char的值当成一个指针会出错的吧?谢谢。
lfxyan 2013-03-17
  • 打赏
  • 举报
回复
引用 2 楼 feiyuren 的回复:
按地址+偏移的方法寻找下一处位置 如果bucketIndexNode指向一个链表或树结构体节点的话 这个宏就是访问bucketIndexNode的下一个节点 和bucketIndexNode = bucketIndexNode->next;等价
你说的是对bucketIndexNode求纸吧?可是把bucketIndexNode强制转换成char**并不等同于&bucketIndexNode吧?
jimette 2013-03-16
  • 打赏
  • 举报
回复
用alt+g跟进去看看宏定义是什么
常如意 2013-03-16
  • 打赏
  • 举报
回复
引用 3 楼 AnYidan 的回复:
引用 2 楼 feiyuren 的回复:按地址+偏移的方法寻找下一处位置 如果bucketIndexNode指向一个链表或树结构体节点的话 这个宏就是访问bucketIndexNode的下一个节点 和bucketIndexNode = bucketIndexNode->next;等价 ++
++
jiaoyun007 2013-03-16
  • 打赏
  • 举报
回复
除非这个链表的节点或者树节点地址是连续的才可以
引用 2 楼 feiyuren 的回复:
按地址+偏移的方法寻找下一处位置 如果bucketIndexNode指向一个链表或树结构体节点的话 这个宏就是访问bucketIndexNode的下一个节点 和bucketIndexNode = bucketIndexNode->next;等价
jiaoyun007 2013-03-16
  • 打赏
  • 举报
回复
并非强制转换,那样是为了取地址,可以访问与n之后i个单位的内容,相当于二维数组的一维数组成员
Lost_In_Code 2013-03-16
  • 打赏
  • 举报
回复
引用 2 楼 feiyuren 的回复:
按地址+偏移的方法寻找下一处位置 如果bucketIndexNode指向一个链表或树结构体节点的话 这个宏就是访问bucketIndexNode的下一个节点 和bucketIndexNode = bucketIndexNode->next;等价
确实是使用地址加偏转的方法找下个位置。宏的实现是#define CHILD(n,i) (*((char **)(n) + i)),也就是将一个二维数组中A[][]中的A[n]加i,变为A[n+i]。
AnYidan 2013-03-15
  • 打赏
  • 举报
回复
引用 2 楼 feiyuren 的回复:
按地址+偏移的方法寻找下一处位置 如果bucketIndexNode指向一个链表或树结构体节点的话 这个宏就是访问bucketIndexNode的下一个节点 和bucketIndexNode = bucketIndexNode->next;等价
++
feiyuren 2013-03-15
  • 打赏
  • 举报
回复
按地址+偏移的方法寻找下一处位置 如果bucketIndexNode指向一个链表或树结构体节点的话 这个宏就是访问bucketIndexNode的下一个节点 和bucketIndexNode = bucketIndexNode->next;等价
小黑小宝 2013-03-15
  • 打赏
  • 举报
回复
&bucketIndexNode 取指针的地址

69,373

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧