美文网首页
c 断错误 demo

c 断错误 demo

作者: AppleLin_cdea | 来源:发表于2021-10-08 20:59 被阅读0次

    c 断错误 demo

    2021年10月8日20:55:05 星期五
    一个简单的段错误例子。

    示例:

    // demo.c
    #include <stdio.h>
    
    struct fruit {
        int weight;
        char name[32];
    };
    
    int main()
    {
        struct fruit fru[2] = {
            { .weight = 10, .name = "pear" },
            { .weight = 8, .name = "apple" }
        };
    
        for(int i = 0; i < sizeof(fru)/sizeof(struct fruit); i++)
        {
            printf("%d. %s:%d\n", fru[i].name, fru[i].weight);
        }
    
        return 0;
    }
    
    

    提问:这个代码有没有 bug?
    答案:当然有,而且会产生错误。
    正确代码

    #include <stdio.h>
    
    struct fruit {
        int weight;
        char name[32];
    };
    
    int main()
    {
        struct fruit fru[2] = {
            { .weight = 10, .name = "pear" },
            { .weight = 8, .name = "apple" }
        };
    
        for(int i = 0; i < sizeof(fru)/sizeof(struct fruit); i++)
        {
            printf("%d. %s:%d\n", i, fru[i].name, fru[i].weight);
        }
    
        return 0;
    }
    

    效果

    $ gcc demo.c
    $ ./a.out
    0. pear:10
    1. apple:8
    

    相关文章

      网友评论

          本文标题:c 断错误 demo

          本文链接:https://www.haomeiwen.com/subject/qlxfoltx.html