首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >malloc a char[][]

malloc a char[][]
EN

Stack Overflow用户
提问于 2011-12-01 20:14:36
回答 2查看 348关注 0票数 0

我正在尝试malloc一个char,使行和列在每个单元格中都有一个字母。类似于int xi,其中我有i*行和j*列。基本上我想做的是:

代码语言:javascript
复制
     |     
     1
    222
   33333
  4444444

我尝试使用这段代码,但它给我一个错误:赋值在没有强制转换的情况下从指针生成一个整数

代码语言:javascript
复制
A=(char**) malloc (5*sizeof(char*));
for(i=0;i<N+2;i++)`{
    A[i]=(char*) malloc(7*sizeof(char));
}
for(i=0;i<3;i++){
    for(j=0;j<7;j++){
       left=3;
       right=3;
       if((j>=left)&&(j<=right)){
          A[i][j]=i;
       }
    }
    left--;
    right++;
}
EN

回答 2

Stack Overflow用户

发布于 2011-12-01 21:05:50

我会采用不同的方法:

代码语言:javascript
复制
#define STEPS      5
#define ARRAY_SIZE STEPS*STEPS

在您的例子中,数组的大小可以通过上面的公式轻松地计算出来。

现在,您只需要分配固定大小的字节,并填充它。就这样。更重要的是,下面的版本将在简单性和性能上超越您的版本。

代码语言:javascript
复制
int i, j;
char *array;

array = malloc(ARRAY_SIZE);
for (i = 0; i < STEPS; i++)
    for (j = 0; j < (i * 2 + 1); j++)
        *(array + i * STEPS + j) = i + 1;

Proof

票数 3
EN

Stack Overflow用户

发布于 2011-12-01 20:32:43

这对我来说编译很好,只要我在您的代码片段中添加这段代码;请注意,"A“被声明为"char **”类型。如果你写"char A“,它就不会起作用。

代码语言:javascript
复制
#include <stdlib.h>

int main() {
  const int N = 10;
  int i, j, left, right;
  char **A;
  /* your code */
  return 0;
}
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/8341216

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档