首页
学习
活动
专区
工具
TVP
发布
您找到你想要的搜索结果了吗?
是的
没有找到

const、sizeof与内联函数相关面试题

sizeof操作符的结果类型是size_t,他在头文件中的typedef为unsigned int类型 sizeof是运算符,strlen是函数 sizeof可以用类型做参数,strlen只能用char...sizeof还可以用函数做参数。 数组作sizeof的参数不退化,传递给strlen就退化为指针 大部分编译程序在编译的时候就把sizeof计算过了,是类型或是变量的长度。...sizeof后如果是类型必须加括号,如果是变量名可以不加括号。这是因为sizeof是一个操作符,而不是函数。 当使用了一个结构类型或变量时,sizeof返回实际的大小。...数组作为参数传给函数时传递的是指针而不是数组,传递的是数组的首地址。 sizeof操作符不能用于函数类型,不完全类型或位字段。...由于操作数的字节数在实现时可能会出现变化,建议在设计操作数字节大小时用sizeof代替常量计算。 如果操作数是函数中的数组形参或函数类型的形参,sizeof给出指针的大小。

42240

sizeof 知多少?

0) = 0 * * sizeof’(S, i) = ceil(sizeof’(S, i - 1) / sizeof(Mi)) * sizeof(Mi) + sizeof(Mi) (其中ceil为向上取整函数...(sizeof’(S, i - 1) / sizeof(Mi)) * sizeof(Mi) + sizeof(Mi) (其中ceil为向上取整函数) * * maxsizeof = max(sizeof...,每一个包含至少一个虚函数的类型都会有一张虚函数表,每一个对应类型的实例都存有一个虚函数表指针指向该类型的虚函数表,一般来讲虚函数表指针都放在类型实例内存布局的首部....首先放置B1的虚函数指针(I会复用该虚函数表指针) b. 接着放置B1的数据成员,并逐个执行内存对齐 c. 接着放置B2的虚函数指针(如果有的话) d....重排)成了(Bi, B1, B2, …, Bi-1, Bi+1, …, Bn));如果基类都没有虚函数表,但是I自身有虚函数表的话,I的首部则会放置自身的虚函数表指针,否则,I会复用第一个有虚函数表的基类的虚函数表指针

47500

sizeof 知多少? (下)

首先放置B1的虚函数指针(I会复用该虚函数表指针) b. 接着放置B1的数据成员,并逐个执行内存对齐 c. 接着放置B2的虚函数指针(如果有的话) d....重排)成了(Bi, B1, B2, …, Bi-1, Bi+1, …, Bn));如果基类都没有虚函数表,但是I自身有虚函数表的话,I的首部则会放置自身的虚函数表指针,否则,I会复用第一个有虚函数表的基类的虚函数表指针...= ceil(0 / 4) 4 + 4 = 4 (b2的虚函数表指针,I会复用该指针) sizeof’(I, 2) = ceil(sizeof’(I, 1) / alignof(b2.vbptr))...4 = 4 (b2的虚函数表指针,I会复用该指针) sizeof’(I, 2) = ceil(sizeof’(I, 1) / alignof(b2.m_2)) alignof(b2.m_2) + sizeof...alignof(b3.vptr) + sizeof(b3.vptr) = ceil(5 / 4) 4 + 4 = 12 (b3的虚函数表指针) sizeof’(I, 4) = ceil(sizeof’(

58600

CC++ sizeof(下)

union U { int i; char c; S1 s; }; 3.sizeof计算类 类是C++中常用的自定义构造类型,有数据成员和成员函数组成,进行sizeof计算时,和结构体并没有太大的区别...C++中类同结构体没有本质的区别,结构体同样可以包含成员函数,构造函数,析构函数,虚函数和继承,但一般不这么使用,沿用了C的结构体使用习惯。...(2)类的成员函数并不影响类对象占用的空间,类对象的大小是由它数据成员决定的。 (3)类和结构体一样,同样需要对齐,具体对齐的规则见上文结构体的内存对齐。...(4)类如果包含虚函数,编译器会在类对象中插入一个指向虚函数表的指针,以帮助实现虚函数的动态调用。 所以,该类的对象的大小至少比不包含虚函数时多4个字节。如果考虑内存对齐,可能还要多些。...如果使用数据成员之间的对齐,当类对象至少包含一个数据成员,且拥有虚函数,那么该对象的大小至少是8B,读者可自行推导。

92920

【C 语言】数据类型本质 ( sizeof 函数 | 数据类型大小 )

文章目录 一、sizeof 函数 二、数据类型大小 三、代码示例 一、sizeof 函数 ---- sizeof() 函数可以计算 数据类型 的大小 ; sizeof (类型说明符/表达式) 可以向函数中传递...() 函数 计算 数据类型大小 ; 上述 sizeif(a) 的值为 4 , sizeof(array) 的值是 40 ; a 表达式类型是 int , 该类型占据 4 字节的内存空间 ;...; C 语言编译器 解析到 int a; 代码时 , 就会给 a 变量分配 4 字节大小的内存空间 ; 三、代码示例 ---- 代码示例 : #include /* * 函数入口...argc, char **args) { // 编译器分配 4 字节内存 int a; // 编译器分配 40 字节内存 int array[10]; // sizeof...(a)=4, sizeof(array)=40 printf("sizeof(a)=%d, sizeof(array)=%d\n", sizeof(a), sizeof(array));

87510

sizeof 知多少? (上)

= 0 sizeof’(S, i) = ceil(sizeof’(S, i - 1) / sizeof(Mi)) \ sizeof(Mi) + sizeof(Mi) (其中ceil为向上取整函数) *...’(S, i - 1) / sizeof(Mi)) \ sizeof(Mi) + sizeof(Mi) (其中ceil为向上取整函数) * maxsizeof = max(sizeof(M1), sizeof...(M2), …, sizeof(Mn)) (其中max为最大值函数) sizeof(S) = ceil(sizeof’(S, n) / maxsizeof) \ maxsizeof * 2....(注意sizeof和alignof的使用): 我们定义函数 sizeof’(S, i) 为结构体 S 考虑了第 i 个成员后计算所得的内存大小(假设S有n个成员) sizeof’(S, 0) = 0 sizeof...,每一个包含至少一个虚函数的类型都会有一张虚函数表,每一个对应类型的实例都存有一个虚函数表指针指向该类型的虚函数表,一般来讲虚函数表指针都放在类型实例内存布局的首部.

82200
领券