下面的代码可以只调用一次malloc实现吗?

发布于 2022-10-15 08:09:47 字数 583 浏览 24 评论 0

  1. int **MATRIXint(int r, int c, int val)
  2.   {
  3.     int i, j;
  4.     int **t = malloc(r * sizeof(int *));
  5.     for (i = 0; i < r; i++)
  6.       t[i] = malloc(c * sizeof(int));
  7.     for (i = 0; i < r; i++)
  8.       for (j = 0; j < c; j++)
  9.         t[i][j] = val;
  10.     return t;
  11.   }

复制代码

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(6

泪是无色的血 2022-10-22 08:09:47

本帖最后由 liexusong 于 2011-04-30 14:40 编辑

malloc(r * c * sizeof(int));

无可置疑 2022-10-22 08:09:47

我也觉得是这样的,

这题出的令人费解, 用一维数组存储矩阵,感觉很别扭

魔法唧唧 2022-10-22 08:09:47
  1. int **MATRIXint(int r, int c, int val)
  2.   {
  3.     int i, j;
  4.     void *p=(void *)malloc(r * sizeof(int *)+r*c * sizeof(int));
  5.     int **t = (int **)p;
  6.     int *pt=p+r * sizeof(int *);
  7.     for (i = 0; i < r; i+=c)
  8.       t[i] = pt+i;
  9.     j=r*c;  
  10.     for (i = 0; i < j; i++)
  11.         pt[i] = val;
  12.     //若是val是0~255的话,可用memset   
  13.     return t;
  14.   }  

复制代码

你与昨日 2022-10-22 08:09:47

malloc(r * c * sizeof(int));
liexusong 发表于 2011-04-30 14:38

嗫嚅 2022-10-22 08:09:47

当然能了,
有R个指针数组
每个数组元素包含C个成员
每个成员长度sizeof(int)

绝不服输 2022-10-22 08:09:47

用calloc也行,有点“一维数组”的味道

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文