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