《C/C++专项练习》 — (3)
2016-01-19 15:51
267 查看
序
第三次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\n",a [ i]); rewind (fp); fscanf(fp,〝%d〞,&k); fclose(fp); printf("%d\n",k); } }
A . 123456
B . 1
C . 6
D . 21
分析: 讨论中的解释是这种。本题考查文件操作函数,fseek用于二进制方式打开的文件,移动文件读写指针位置。
将文件内部的位置指针又一次指向一个流(数据流/文件)的开头。所以最后仅仅保留的6。
答案:C
总结: 错选B 。 没看懂题目。。
。
相关文章推荐
- C++之路进阶——splay树(宠物收养所)
- leetcode Move Zeros
- C/C++代码覆盖工具gcov与lcov入门
- C++ AMP异构并行编程解析
- android源码中 C++文件log使用
- UVA11729_Commando War
- C++ 设计模式2 (面向对象设计原则)
- C语言二叉树的层序遍历
- C语言结构体类型声明和定义标准形式
- c++ struct的两个注意点
- C++程序后台运行代码
- C语言函数指针的使用举例
- CodeBlocks调试C&C++代码的方法
- Eclipse中 C/C++ 开发
- 堆排序使用的问题
- C++复数类的运算符重载
- C语言內嵌汇编
- C++头文件一览
- c++日期类的实现级运算符的重载
- 用纯C语言实现快速排序,分递归调用法和非递归调用法。