加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

什么是C表达开头的*的重要性?

发布时间:2020-12-16 10:42:15 所属栏目:百科 来源:网络整理
导读:对于那些了解一点c的人来说,这只是一个简单的问题.在表达的开头是什么意思? 如…… If (this == thisThingOverHere)ThisThing = *((WORD *) Array[withThisPosition]); 您可以假设WORD是16位无符号,而Array是8位字节数组. 很难尝试找出这里发生的事情. 干杯
对于那些了解一点c的人来说,这只是一个简单的问题.在表达的开头是什么意思?
如……

If (this == thisThingOverHere)
ThisThing = *((WORD *) &Array[withThisPosition]);

您可以假设WORD是16位无符号,而Array是8位字节数组.
很难尝试找出这里发生的事情.

干杯

解决方法

弄清楚正在发生的事情并不困难.让我们分解吧.

&Array[withThisPosition]

这表示使用Array中的ThisPosition元素的地址.相当于Array withThisPosition.

(WORD *)

假设由& Array [withThisPosition]返回的指针实际上是指向WORD的指针.这称为“强制转换”,因为您告诉编译器将对象与最初的Array类型区别对待.

最后:

*(...)

这表示返回指向的对象.因此返回指向对象内的WORD.

如果我要为你改写这个,我可能会建议:

If (this == thisThingOverHere) {
  void *pointerToArrayELement;
  WORD *pointerToWORD;
  WORD result;

  pointerToArrayElement = &Array[withThisPosition];
  pointerToWORD = (WORD *)pointerToArrayElement;
  result = *pointerToWORD;

  ThisThing = result;
}

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读