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

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/z914022466/article/details/73770311

以下所有问题均为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后填充3
class c2
{
    double a;
    virtual void f(){}

};//6.对齐,double前填充4

class c4 
{
    char a;
    double b;
    int c;
    char d;
};//7.对齐
class c3
{
public:
    c4 af;
    int aa;
private:

};//8.对齐,只取基本类型,int后填充4



class 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);

}

猜你喜欢

转载自blog.csdn.net/z914022466/article/details/73770311