C++笔试面试中的sizeof常见题目

来源:互联网 发布:雅思阅读材料 知乎 编辑:程序博客网 时间:2024/05/16 05:04

以下所有问题均为32位操作系统


#include <iostream>#include <string>using  std::cout;using  std::endl;using std::string;//sizeof考点//1.sizeof是运算符不是函数//2.sizeof(void) 编译报错class a{};//3. 1个字节在内存占位class b{virtual void f(){}virtual void g(){}};//4.虚指针class c1{    char a;    virtual void f(){}};//5.对齐,char后填充3class c2{    double a;    virtual void f(){}};//6.对齐,double前填充4class c4 {    char a;    double b;    int c;    char d;};//7.对齐class c3{public:    c4 af;    int aa;private:};//8.对齐,只取基本类型,int后填充4class d{    char a:3;    char b:3;    char c:3;    char f:3;    char g:3;};//9.位域,a和b在一个字节,c和f在一个字节,g是一个字节int va=0;int f(){    va++;    return va;}void f2(int a[10]){    cout<<sizeof(a)<<endl;//10.数组名作参数退化为指针}//11.不能求不完整的数组,此处无示例int main(){    cout<<"a:"<<sizeof(a)<<endl;    cout<<"b:"<<sizeof(b)<<endl;    cout<<"c1:"<<sizeof(c1)<<endl;    cout<<"c2:"<<sizeof(c2)<<endl;    cout<<"c4:"<<sizeof(c4)<<endl;    cout<<"c3:"<<sizeof(c3)<<endl;    cout<<"d:"<<sizeof(d)<<endl;    string e="aa";    cout<<sizeof(e)<<endl;//12.string的默认长度,不同编译器不同    cout<<sizeof(f())<<" "<<sizeof(va=va+1.1)<<" "<<sizeof(va+1.1)<<endl;//13.sizeof在编译时确定,函数与表达式不执行    cout<<va<<endl;    int vec[10]={0};    f2(vec);}
原创粉丝点击