C 在执行时定义数组维度

C 在执行时定义数组维度,c,C,我正在尝试编写张量代数,我需要一些数组,它们的维数在编译时是未知的(请记住,方括号内的文本不是实际代码): 其中,“元素”变量的“*”符号数与(co_索引+contra_索引)相同;有没有办法做到这一点,在执行时定义“元素”变量的“维度” 我的意思的一个例子是:如果(co_index+contra_index=3),“element”的内存分配应该如下所示: elemento = (float***)malloc(sizeof(float**) * N); for(i=0;i<N;

我正在尝试编写张量代数,我需要一些数组,它们的维数在编译时是未知的(请记住,方括号内的文本不是实际代码):

其中,“元素”变量的“*”符号数与(co_索引+contra_索引)相同;有没有办法做到这一点,在执行时定义“元素”变量的“维度”

我的意思的一个例子是:如果(co_index+contra_index=3),“element”的内存分配应该如下所示:

 elemento = (float***)malloc(sizeof(float**) * N);

  for(i=0;i<N;i++)
     elemento[i]=(float**)malloc(sizeof(float*) * N);

  for(i=0;i<N;i++)
  {
     for(j=0;j<N;j++)
        elemento[i][j]=(float*)malloc(sizeof(float) * N);
  }
elemento=(float***)malloc(sizeof(float**)*N);

对于(i=0;问题是,如果我知道如何写得更清楚……我可能会修复这个问题。我知道它非常不清楚,我会尝试重写它better@ChrisTurner是的!没错!这是胡说八道吗?是的,一般来说,这是胡说八道。我认为与其试图把它塞进具有可变维数的数组,不如“我发现将其视为树结构要容易得多dupe没有回答这个问题。dupe是关于固定维度数组和如何获得最佳内存布局的。这个问题询问运行时变量维度。我将投票重新打开。
 elemento = (float***)malloc(sizeof(float**) * N);

  for(i=0;i<N;i++)
     elemento[i]=(float**)malloc(sizeof(float*) * N);

  for(i=0;i<N;i++)
  {
     for(j=0;j<N;j++)
        elemento[i][j]=(float*)malloc(sizeof(float) * N);
  }