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

*(int *)在C中的含义是什么?

发布时间:2020-12-16 06:46:06 所属栏目:百科 来源:网络整理
导读:我在OpenGL教程中遇到了以下行,我想知道*(int *)是什么意思,它的值是什么 if ( *(int*)(header[0x1E])!=0 ) 解决方法 让我们一步一步: header[0x1E] header必须是某种类型的数组,这里我们得到对数组中0x1Eth元素的引用. (header[0x1E]) 我们取该元素的地址.
我在OpenGL教程中遇到了以下行,我想知道*(int *)是什么意思,它的值是什么

if ( *(int*)&(header[0x1E])!=0  )

解决方法

让我们一步一步:

header[0x1E]

header必须是某种类型的数组,这里我们得到对数组中0x1Eth元素的引用.

&(header[0x1E])

我们取该元素的地址.

(int*)&(header[0x1E])

我们将该地址转换为指向int的指针.

*(int*)&(header[0x1E])

我们取消引用指向int的指针,通过解释头的第一个sizeof(int)字节,从偏移量0x1E开始,作为一个int得到一个int,得到它在那里找到的值.

if ( *(int*)&(header[0x1E])!=0  )

它将结果值与0进行比较,如果不为0,则执行if语句主体中的任何内容.

请注意,这可能非常危险.考虑如果标头被声明为将会发生什么:

double header [0xFF];

……或者:

int header [5];

(编辑:李大同)

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

    推荐文章
      热点阅读