栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > C/C++/C#

牛客错题2

C/C++/C# 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

牛客错题2

1sizeof 内存对齐问题

若int 占 2 个字节, char 占 1 个字节, float 占 4 个字节, sizeof(xc) 大小是:

struct stu {
    union{
        char bj[5];
        int bh[2];
    } _class;
    char xm[8];
    float cj;
}xc;

解析:
结构体内存对齐规定:结构体的总大小为结构体最宽基本类型成员大小的整数倍,这道题目中最宽的是float,其占4个字节,但是此题目中还有一个联合体(联合体的大小取内部最大的字节数, union内部的数据成员中最大的数据成员为int,所以每个数据成员要为2的倍数)
struct stu

{

union{

char bj[5]; // 1*5=5

int bh[2]; // 2*2=4

} class; // union中最大的字节数是5,但需要补齐为 int 的整数倍,所以实际大小为 5 +1 = 6,但是外面看struct的对齐数,最大的是float的4字节,所以按四字节对齐,这样union补齐成8字节(4的倍数)是8

char xm[8]; // (8) + 8 = 16,16是 float所占字节数 的倍数,不需要对齐

float cj; // (16) + 4 = 20, 是 float 的倍数,不需要补齐,最终大小为 20

}xc

2、函数调用问题

若已定义的函数有返回值,则以下关于该函数调用的叙述中错误的是()

解析:
返回值存在寄存器中,没有地址,不能作为形参,但可以作为实参。
函数调用参数的数据传递是单向传递,即实参传给形参,不能由形参传给实参。所以函数调用不可以作为另一个函数的形参!

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/316894.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号