列表

详情


EP11. 嵌入式结构体对齐

描述

牛牛需要建立一个结构体Nowcoder,该结构体包括三个成员,其类型分别是int、double和char。假设牛牛想让这个结构体所占据的内存最小,请问你该怎么建立该结构体?(输入三个相应类型的变量用于初始化结构体)

示例1

输入:

1,1.000,a

输出:

13

原站题解

上次编辑到这里,代码来自缓存 点击恢复默认模板

C 解法, 执行用时: 2ms, 内存消耗: 276KB, 提交时间: 2022-08-05

/**
 * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
 *
 * 
 * @param n int整型 
 * @param d double浮点型 
 * @param c char字符型 
 * @return int整型
 *
 * C语言声明定义全局变量请加上static,防止重复定义
 */
#pragma pack(1)
struct Nowcoder{
    char c;
    int n;
    double d;
};

int smaller_space(int n, double d, char c ) {
    struct Nowcoder temp;
    temp.c = c;
    temp.n = n;
    temp.d = d;
    return sizeof(temp);
}

C 解法, 执行用时: 2ms, 内存消耗: 284KB, 提交时间: 2022-08-05

/**
 * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
 *
 * 
 * @param n int整型 
 * @param d double浮点型 
 * @param c char字符型 
 * @return int整型
 *
 * C语言声明定义全局变量请加上static,防止重复定义
 */
#pragma pack(1)
typedef struct Nowcoder{
    char c;
    int n;
    double d;
}new;

int smaller_space(int n, double d, char c ) {
    // write code here
    new s;
    s.c = c;
    s.n = n;
    s.d = d;
    
    return sizeof(s);
}

C 解法, 执行用时: 2ms, 内存消耗: 292KB, 提交时间: 2022-08-02

/**
 * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
 *
 * 
 * @param n int整型 
 * @param d double浮点型 
 * @param c char字符型 
 * @return int整型
 *
 * C语言声明定义全局变量请加上static,防止重复定义
 */
int smaller_space(int n, double d, char c ) 
{
    return sizeof(n)+sizeof(d)+sizeof(c);
}

C 解法, 执行用时: 2ms, 内存消耗: 300KB, 提交时间: 2022-08-05

/**
 * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
 *
 * 
 * @param n int整型 
 * @param d double浮点型 
 * @param c char字符型 
 * @return int整型
 *
 * C语言声明定义全局变量请加上static,防止重复定义
 */
#pragma pack(1)
typedef struct
{
    double d;
    int n;
    char c;
}Nowcoder;
#pragma pack()

int smaller_space(int n, double d, char c ) {
    // write code here
    Nowcoder data;
    data.d = d;
    data.n = n;
    data.c = c;
    return sizeof(Nowcoder);
}

C 解法, 执行用时: 2ms, 内存消耗: 300KB, 提交时间: 2022-08-04

/**
 * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
 *
 * 
 * @param n int整型 
 * @param d double浮点型 
 * @param c char字符型 
 * @return int整型
 *
 * C语言声明定义全局变量请加上static,防止重复定义
 */
#pragma pack(1)
typedef struct {
    char c;
    int  n;
    double d;
}Nstruct;
#pragma pack()
int smaller_space(int n, double d, char c ) {
    // write code here
    Nstruct Ncode;
    return sizeof(Ncode);
}

上一题