迷途的启木菌 2019-11-11 23: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 10: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条)

报告相同问题?

悬赏问题

  • ¥15 求解 yolo算法问题
  • ¥15 虚拟机打包apk出现错误
  • ¥30 最小化遗憾贪心算法上界
  • ¥15 用visual studi code完成html页面
  • ¥15 聚类分析或者python进行数据分析
  • ¥15 逻辑谓词和消解原理的运用
  • ¥15 三菱伺服电机按启动按钮有使能但不动作
  • ¥15 js,页面2返回页面1时定位进入的设备
  • ¥50 导入文件到网吧的电脑并且在重启之后不会被恢复
  • ¥15 (希望可以解决问题)ma和mb文件无法正常打开,打开后是空白,但是有正常内存占用,但可以在打开Maya应用程序后打开场景ma和mb格式。