C-如何将数组结构指向变量?

时间:2018-08-07 13:57:26

标签: c arrays

我需要创建一个变量,该变量接收数组 format ,但不接收数组位置的确切值。我怎样才能做到这一点?下面的示例显示了我要执行的操作(不是为了正常运行,只是为了表明我的意图)。

#include <stdio.h>
#include <stdlib.h>
#include <math.h>

int main() {
    int i, j, m = 30;
    double T[m][m], aE = 3, TE;

    TE = T[i][j+1];

    for (i = 1; i < 30; i++)
        for (j = 1; j < 30; j++)
            T[i][j] = (aE * TE);

    getch();
    return (0);
}

好吧,该数组将具有许多double值,我希望TE指向或像T[i][j+i]结构那样工作,以便我可以使用TE每当我需要T数组的那个位置时。

这怎么可能?

1 个答案:

答案 0 :(得分:0)

您的示例中存在一些错误,这些错误会导致无法编译(我想这是使我们了解结构外观的女仆)。我会在这里尝试编写一个可以执行类似操作的版本。

#ifdef MALLOC_ME

int i, j, m;
m = inputed_matrix_size;

double **T = malloc(sizeof(double) * m * m);

#else

# define MATRIX_SIZE 30
int i, j, m = MATRIX_SIZE;
double T[MATRIX_SIZE][MATRIX_SIZE];

#endif // MALLOC_ME

// I'll assume we put some defined value in the first line, first column
// that will be used as source in later calculation.
T[0][0] = value;
double *TE = &T[0][0];
double aE = some_indice_value;

for (i = 0 ; i < m ; i++)
  for (j = 0 ; j < m ; j++)
  {
    if (i == 0 && j == 0)
      continue; // lets not override our template value;

    T[i][j] = aE * (*TE); 
    // *TE is the double value contained at the position of the array stored earlier
  }