什么是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; } (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |