以下程序中突出显示的行是什么意思?

时间:2016-12-25 10:22:37

标签: c++ reinterpret-cast

此处的代码用于创建学生报告卡项目,但在尝试理解时,我们无法从代码中找出以下行的使用和功能。

此:

File.read(reinterpret_cast<char *> (&st), sizeof(student));

和此:

int pos=(-1)*static_cast<int>(sizeof(st));

这是主要代码:

File.read(reinterpret_cast<char *> (&st), sizeof(student));
if(st.retrollno()==n)
    {
    st.showdata();
    cout<<"\n\nPlease Enter The New Details of student"<<endl;
        st.getdata();
            int pos=(-1)*static_cast<int>(sizeof(st));
            File.seekp(pos,ios::cur);
            File.write(reinterpret_cast<char *> (&st), sizeof(student));
            cout<<"\n\n\t Record Updated";
            found=true;
    }

1 个答案:

答案 0 :(得分:1)

int pos=(-1)*static_cast<int>(sizeof(st));

unsigned int类型转换为整数并取消它,以便计算在下一行中向后搜索的偏移量

reinterpret_cast<char *> (&st)

只需将结构上的指针转换为char上的指针,即可与函数原型兼容。但是相同的指针值被传递给函数。

因此,此代码从文件中重新排列sizeof(st)个字节并写入新结构,更新旧结构。