zoukankan      html  css  js  c++  java
  • sizeof()学习记录

    1 问题引出

    在学习“二进制文件操作”时,书中有这么一个例程:

     1 #include <iostream>
     2 #include <fstream>
     3 using namespace std;
     4 
     5 struct student
     6 {
     7     char name[20];
     8     int num;
     9     char sex;
    10     int age;
    11 };
    12 
    13 int main()
    14 {
    15     student stud[3] = {"li", 1001, 'f', 18, "fun", 1002, 'm', 19, "wang", 1004, 'm', 17};
    16     ofstream outfile("stud.dat", ios::binary);
    17     if(!outfile)
    18     {
    19         cerr << "open error!" << endl;
    20         abort();//退出程序
    21     }
    22     for(int i = 0; i < 3; i++)
    23     {
    24         outfile.write((char*)&stud[i], sizeof(stud[i]));
    25     }
    26     outfile.close();
    27     return 0;
    28 }

    用记事本打开,显示乱码,如下所示:

    用16进制格式打开,如下所示:

    从上图中可以看出,给结构体分配的空间是4的倍数。

    当把结构体修改一下:

    1 struct student
    2 {
    3     char name[15];
    4     char sex;
    5     int num;    
    6     int age;
    7 };

    结构体分配的空间如下图所示:

  • 相关阅读:
    komodo install on ubuntu
    关于scrapbook的导入导出
    hg常用命令小记

    在cygwin使用python
    命运多cuai
    常用shell命令
    360做电视广告了
    ubuntu im安装
    ubuntu下的路径
  • 原文地址:https://www.cnblogs.com/QQ2962269558/p/13414040.html
Copyright © 2011-2022 走看看