【问题标题】:Array data pointing to another position in another array [closed]指向另一个数组中另一个位置的数组数据[关闭]
【发布时间】:2015-11-12 19:46:51
【问题描述】:

在我的 C 项目中,我要求用户提示一些信息。

例如:

"What lines are white ?"

用户提示为白色的行号:

3 4 6线等

我知道每一行在4x4 矩阵中都有唯一的位置。

例如:
- 第 3 行:matrix[3][2],
- 第 2 行:matrix[3][3] 等。

当用户说一行时,我的程序必须“着色”矩阵中的右侧单元格,并在单元格中写入 X。

我不知道如何为某个“行数”映射矩阵中的某个位置。我想做一种字典,例如3:&matrix[2][2]

如何做到这一点?我不想逐行指定位置,例如:

int line3 = &matrix[2][2] 等等……

如果可能的话,我想使用一个数组..我希望我很清楚..

提前致谢。

【问题讨论】:

  • 到目前为止你有没有尝试过?

标签: c arrays pointers matrix


【解决方案1】:

这个选项怎么样: 我们为矩阵定义一个指针向量。 例如一个 4x4 矩阵:

int matrix[4][4];
int *mapVector[4*4];

用于映射我们所做的向量中的任何线

mapVector[i] = &matric[x][y];

如果我们想设置第 3 行的值,我们只写:

*mapVector[3] = X;

并且矩阵中的位置将自动更新。

【讨论】:

  • 是的,这是我想要使用的解决方案,但是有一种方法可以为所有单元格声明向量而不指定位置?例如,而不是使用 vector[3]=.. Vector[4]= etc.. 我可以将它声明为法线向量吗? Vector[16]={cell1pointer,cell2 等...?
  • 如果要将行号映射到矩阵中的特定位置,则必须为每一行设置它在矩阵中的位置。否则我看不到任何映射的理由。如果您使用的是简单的映射,例如:line[0] in matrix[0][0] .... 在这种情况下,您不需要单独设置每一行,您可以编写 int *mapVector = (int* )矩阵;并且对于设置值只写 *mapVector[0] = ...
  • 我明白了,但我必须单独设置向量的每个值,而不是在一个声明中一起设置
  • 我希望这会有所帮助:-)
【解决方案2】:

你可以使用这样的结构:

typedef struct 
{
    int lineNumber;
    int isWhite;
} line;

line matrix[4][4];

【讨论】:

  • 我已经尝试过这种方法,但是我需要将矩阵与线条分开。我解释得更好,我的真正项目是为卡诺图制作一个程序,所以矩阵的每个单元格这种情况下 4x4 对应于布尔函数中的变量组合。例如 0000 是单元格 [0][0] 等等。我的答案是在 C 语言中,除了使用结构之外,没有其他方法可以解决这个问题?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-11-23
  • 1970-01-01
相关资源
最近更新 更多