迷途的启木菌 2019-11-11 15:47 采纳率: 50%
浏览 482
已采纳

C语言中malloc动态分配空间的使用

求解答,我看不出来怎么解决,谢谢!

#include<stdio.h>
#include<stdlib.h>

int main(void)
{
    int count, *array;
    if ((array(int *)malloc (10 * sizeof(int))) == NULL)
    {
        printf("can not success!\n");
        exit(1);
    }
    for (count = 0; count < 10; count++)
        array[count] = count;
    for (count = 0; count < 10; count++)
        printf("%2d ", array[count]);
    return 0;
}

  • 写回答

3条回答 默认 最新

  • sinat_33817180 2019-11-12 02:41
    关注

    虽然基本问题只是少了个等号,但希望楼主学到的不只是语法,而是 C 语言的风格与习惯,以下逐步地指出能改善的地方:

    1. array后方少了个等号

    if ((array = (int *)...
    

    2. C99 版本后,不建议将malloc返回值转换,因此这样写即可:

     if ((array = malloc...
    

    请参考 Do I cast the result of malloc?

    3. NULL的判断可利用 Logical NOT 运算符 (即惊叹号 !) 来省略:

    if (!(array = malloc(...
    

    4. 名称 count 一般不会用于 for loop 的计数器,而是使用常见的 i (index)

    请参考 Linux Coding Style

    5. 同上,count, len, size... 等名称适合用于指出数组大小

    6. 英文中,cannot 是较常规的写法


    总结以上代码:

    #include<stdio.h>
    #include<stdlib.h>
    
    int main(void)
    {
        int count = 10;
        int i, *array;
        if (!(array = malloc(count * sizeof(int)))) {
            printf("cannot success!\n");
            exit(1);
        }
        for (i = 0; i < count; i++)
            array[i] = i;
        for (i = 0; i < count; i++)
            printf("%2d ", array[i]);
    
        return 0;
    }
    
    

    展开全部

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(2条)
编辑
预览

报告相同问题?

手机看
程序员都在用的中文IT技术交流社区

程序员都在用的中文IT技术交流社区

专业的中文 IT 技术社区,与千万技术人共成长

专业的中文 IT 技术社区,与千万技术人共成长

关注【CSDN】视频号,行业资讯、技术分享精彩不断,直播好礼送不停!

关注【CSDN】视频号,行业资讯、技术分享精彩不断,直播好礼送不停!

客服 返回
顶部