嵌入式笔试刷题第8天

第1题

题目:

某32位系统下,C程序,请写出输出结果:

void Foo(char str[100]){
    printf("%d\n", sizeof(str));
}

int main(int argc, char **argv){
    char str[] = "http://localhost";
    char *p1 = str;
    void *p2 = malloc(100);
    int n = 10;

    struct A {
        int n;
        char str[10];
    } struct_a;

    printf("%d\n", sizeof(str));
    printf("%d\n", sizeof(p1));
    printf("%d\n", sizeof(p2));
    printf("%d\n", sizeof(n));
    printf("%d\n", sizeof(struct_a));
    Foo(str);

    return 0;
}

答案与解析:

  • sizeof(str):数组 str 是初始化为 "http://localhost"(长度 17,含结尾 \0),但定义为数组,数组大小为 17
  • sizeof(p1)p1 是一个指针,32 位系统指针大小为 4
  • sizeof(p2)void * 指针,大小也是 4
  • sizeof(n):整型,32 位系统中为 4
  • sizeof(struct_a): 成员:int n(4字节)+ char str[10](10字节);结构体可能有字节对齐,填充到 16 字节,所以为 16。
  • sizeof(str)(在 Foo 中):传入的是数组名退化为指针,因此为 4

最终输出:

17
4
4
4
16
4

第2题

题目:

请简述以下两段关于循环的程序的优缺点:

// 第一个
for(i = 0; i < N; i++) {
    if (condition)
        DoSomething();
    else
        DoOtherthing();
}

// 第二个
if (condition) {
    for(i = 0; i < N; i++)
        DoSomething();
} else {
    for(i = 0; i < N; i++)
        DoOt

剩余60%内容,订阅专栏后可继续查看/也可单篇购买

嵌入式笔试专栏 文章被收录于专栏

本专栏系统整理了嵌入式方向笔试中常见的知识点和高频考题,涵盖基础理论、常用算法、C语言陷阱、操作系统原理、驱动开发、常见外设通信协议(如 I2C/SPI/UART)、RTOS、Linux 内核、以及实用电路知识等内容。

全部评论
已老实
点赞 回复 分享
发布于 04-25 21:44 黑龙江
点赞 回复 分享
发布于 04-25 21:40 山西
😄😄😄😄
点赞 回复 分享
发布于 04-25 16:24 上海

相关推荐

评论
2
1
分享

创作者周榜

更多
牛客网
牛客企业服务