Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/66.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C 动态分配浮动矩阵?_C_Dynamic Memory Allocation - Fatal编程技术网

C 动态分配浮动矩阵?

C 动态分配浮动矩阵?,c,dynamic-memory-allocation,C,Dynamic Memory Allocation,有没有办法在C中malloc()2D矩阵?我已经成功地尝试了malloc()ing 1D字段,但是在矩阵中我得到了错误 float*mat2d=malloc(行*cols*sizeof(浮点 )); 要访问矩阵中的值,请使用此寻址方案: 浮点值=mat2d[x+y*cols] float*mat2d=malloc(行*cols*sizeof(浮点 )); 要访问矩阵中的值,请使用此寻址方案: 浮点值=mat2d[x+y*cols] 如果在编译时数组的大小未知,则必须使用循环为每行分配内存 下面是

有没有办法在C中
malloc()
2D矩阵?我已经成功地尝试了
malloc()
ing 1D字段,但是在矩阵中我得到了错误

float*mat2d=malloc(行*cols*sizeof(浮点 ));

要访问矩阵中的值,请使用此寻址方案:

浮点值=mat2d[x+y*cols]

float*mat2d=malloc(行*cols*sizeof(浮点 ));

要访问矩阵中的值,请使用此寻址方案:

浮点值=mat2d[x+y*cols]


如果在编译时数组的大小未知,则必须使用循环为每行分配内存

下面是我找到的一些示例代码:

double** allocate2D(int nrows, int ncols) {
  int i;
  double **dat2;
  /*  allocate array of pointers  */
  dat2 = malloc( nrows*sizeof(double*));

  if(dat2==NULL) {
    printf("\nError allocating memory\n");
    exit(1);
  }
  /*  allocate each row  */
  for(i = 0; i < nrows; i++) {
    dat2[i] = malloc( ncols*sizeof(double));
  }
  if(dat2[i-1]==NULL) {
    printf("\nError allocating memory\n");
    exit(1);
  }
  return dat2;
}
double**allocate2D(整数nrows,整数ncols){
int i;
双**dat2;
/*分配指针数组*/
dat2=malloc(nrows*sizeof(double*);
如果(dat2==NULL){
printf(“\n分配内存时出错\n”);
出口(1);
}
/*分配每行*/
对于(i=0;i


请确保将数据类型从double更改为所需的任何类型。

如果在编译时不知道数组的大小,则必须使用循环为每行分配内存

下面是我找到的一些示例代码:

double** allocate2D(int nrows, int ncols) {
  int i;
  double **dat2;
  /*  allocate array of pointers  */
  dat2 = malloc( nrows*sizeof(double*));

  if(dat2==NULL) {
    printf("\nError allocating memory\n");
    exit(1);
  }
  /*  allocate each row  */
  for(i = 0; i < nrows; i++) {
    dat2[i] = malloc( ncols*sizeof(double));
  }
  if(dat2[i-1]==NULL) {
    printf("\nError allocating memory\n");
    exit(1);
  }
  return dat2;
}
double**allocate2D(整数nrows,整数ncols){
int i;
双**dat2;
/*分配指针数组*/
dat2=malloc(nrows*sizeof(double*);
如果(dat2==NULL){
printf(“\n分配内存时出错\n”);
出口(1);
}
/*分配每行*/
对于(i=0;i


请确保将数据类型从double更改为您需要的任何类型。

谢谢,我假设x和y是坐标,cols引用列。@Hmyzak欢迎您。是的,我的意图是指出x,y是这个2d矩阵中的坐标。谢谢,我假设x和y是坐标,cols指向列。@Hmyzak,不客气。是的,我的意图是指出x,y是这个2d矩阵中的坐标。