Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/60.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_Arrays - Fatal编程技术网

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

C-如何将数组结构指向变量?,c,arrays,C,Arrays,我需要创建一个变量来接收数组格式,但不接收数组位置的精确值。我该怎么做?下面的例子显示了我想要做什么(并不是说它正在工作,只是为了显示我的意图) #包括 #包括 #包括 int main(){ int i,j,m=30; 双T[m][m],aE=3,TE; TE=T[i][j+1]; 对于(i=1;i

我需要创建一个变量来接收数组格式,但不接收数组位置的精确值。我该怎么做?下面的例子显示了我想要做什么(并不是说它正在工作,只是为了显示我的意图)

#包括
#包括
#包括
int main(){
int i,j,m=30;
双T[m][m],aE=3,TE;
TE=T[i][j+1];
对于(i=1;i<30;i++)
对于(j=1;j<30;j++)
T[i][j]=(aE*TE);
getch();
返回(0);
}
好的,数组将有很多
double
值,我希望
TE
指向结构
T[I][j+I]
,这样每当我需要
T
数组的位置时,我都可以使用
TE


这是怎么可能的呢?

在您的示例中,有几个错误会在编译过程中提供它(我想这很难让我们了解结构是什么样子的)。我将尝试在这里编写一个工作版本,可以做类似的事情

#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
  }
\ifdef MALLOC\u ME
int i,j,m;
m=输入的矩阵大小;
双**T=malloc(双*m*m的尺寸);
#否则
#定义矩阵_大小30
int i,j,m=矩阵的大小;
双T[矩阵大小][矩阵大小];
#endif//MALLOC\u ME
//我假设我们在第一行第一列中放入一些定义的值
//这将在以后的计算中用作源。
T[0][0]=数值;
双*TE=&T[0][0];
双aE=某些指示值;
对于(i=0;i
double*TE;TE=&T[i][j+1]但这仅适用于当前的
i
j
,您尚未初始化它们,因此它们是未定义的行为。我不明白您的要求,但在您的代码中,您可以在不初始化i的情况下初始化TE=t[i][j+1],如果没有宏,则无法实现jIt。您可以使
TE
指向特定元素,但如果您更新
i
j
,则
TE
仍然指向它之前指向的相同元素。我认为最好显式地使用
T[I][j+1]
,因为它真正显示了您想要做什么和正在做什么。只使用
T[I][j+1]
有什么问题吗?您不能使用'm'作为数组初始值设定器,因为它不是常量
#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
  }