• 《C/C++专项练习》 — (3)


    第三次C/C++专项。嗯,要抗住打击,继续加油~

    错题分析与总结

    1 . 在64位系统中。有例如以下类:

    class A
    {
    public:
        void *p1;
    private:
        void *p2;
    protected:
        void *p3;
    };
    class B: public A {};

    那么sizeof(B)的数值是?

    A . 8
    B . 16
    C . 24
    D . 32

    分析: 在32位系统中,指针占4个字节,而在64位系统中,指针占8个字节。且都有字节对齐规则。题目中定义类A中有3个指针。故会占用24个字节。B类继承自类A且无成员变量和虚函数表,占用字节和A相同。
    须要注意的是。对于类的继承。父类中的私有成员子类不能訪问时是编译器的行为,可是其在子类中是存在的。所以相同占用空间,能够通过指针对内存的操作来訪问。

    答案: C

    总结:错选了B , 错误的把指针的占用依照4个字节计算。考虑了8字节对齐。就得到了16字节的错误结果。

    2 . 在int b[ ][3] = {{1},{3,2},{4,5,6},{0}};中,sizeof(b) = ?

    A . 4
    B . 12
    C . 28
    D . 48

    分析: 题目中定义的是int类型的二维数组,int类型变量占用4个字节,每行则占用3 * 4 = 12 字节。而二维数组有4行,故sizeof(B) = 4 * 12 = 48 字节。

    答案: D

    总结: 错选A,究其原因还是对sizeof操作符功能的了解不透彻,错误的觉得其为求首地址的大小。关于sizeof关键字。百科的内容非常是具体,sizeof百科内容
    3 . 当一个类A 中没有声明不论什么成员变量与成员函数,这时sizeof(A)的值是多少?
    A . 1
    B . 0
    C . 4
    D . 执行时错误

    分析:举例。class Base {};
    执行cout<<”sizeof(Base)=”<

    #include <stdio.h>
    main( )
    { 
        FILE * fp;
        int i,a[ 6]=﹛1,2,3,4,5,6﹜,k;
        fp = fopen(〝data.dat〞,〝w+〞);
        for (i=0;i<6;i+ +)
        { 
            fseek( fp,0L,0); 
            fprintf(fp,"%d
    ",a [ i]); 
            rewind (fp);
            fscanf(fp,〝%d〞,&k);
            fclose(fp);
            printf("%d
    ",k);
        }
    }

    A . 123456
    B . 1
    C . 6
    D . 21

    分析: 讨论中的解释是这种。本题考查文件操作函数,fseek用于二进制方式打开的文件,移动文件读写指针位置。

    将文件内部的位置指针又一次指向一个流(数据流/文件)的开头。所以最后仅仅保留的6。

    答案:C

    总结: 错选B 。 没看懂题目。。

  • 相关阅读:
    一些要学习的文章
    Android 应用检查更新并下载
    Android中如何下载文件并显示下载进度
    android IntentService和ResultReceiver的异步处理
    android 优秀图表库之MPAndroidChart
    android 仿QQ气泡聊天界面
    android canvas中rotate()和translate()两个方法详解
    android 透明弹出搜索框
    【转】ANDROID自定义视图——onLayout源码 流程 思路详解
    【转】ANDROID自定义视图——onMeasure,MeasureSpec源码 流程 思路详解
  • 原文地址:https://www.cnblogs.com/bhlsheji/p/5142445.html
Copyright © 2020-2023  润新知