我得到了结构
typedef struct
{char *cells;}
Map;
并且单元格假设是指向行数组的指针(行中每个位置都是整数)。 我不知道如何访问例如2.在2.行中的位置。 我盯着一些数组[3] [3],但我不知道如何将它们与这个结构连接起来。 我试过了
Map nextmap;
nextmap.cells[0] = array[0][0];
但我只得到第一个号码,这很清楚。我怎样才能到达其他职位? 提前致谢。 编辑:重命名结构..
答案 0 :(得分:1)
当您执行Map nextmap;
时,您创建了一个未初始化的 Map结构。当您执行nextmap.cells[0] = array[0][0];
时,您取消引用(即跟随)未初始化的指针,并将值存储在它指向的随机存储器中。
如果要初始化单元格结构,可以执行与nextmap.cells = array[0];
一样简单的操作,这会导致nextmap.cells
指向数组。请注意,它不是复制内容;只是指着他们。这意味着如果您通过单元格更改值,您将修改数组中的值。
(另外,在C中使用'new'作为变量名是完全可以接受的,但是你可能会混淆任何阅读代码的C ++程序员,因为'new'是该语言的运算符。)
new
现已更改为问题中的nextmap
已修改以更正nextmap.cells
作业中的类型不匹配。
答案 1 :(得分:0)
首先,new
不是变量的好名称。
new
现已更改为问题中的nextmap
其次在你的情况下cells
应该是一个双指针,就像这个
char ** cells;
或指向2D数组的指针,如
char (*cells)[N][N];
其中N是您想要使用的常数。
答案 2 :(得分:0)
给定一个数组char array[][NumberOfColumns]
(第一个维度不相关,这里省略;在定义数组时需要它),你可以设置一个指向数组第一个元素的指针:
nextmap.cells = &array[0][0];
然后你可以通过计算它在数组中的位置来访问数组array[i][j]
中的元素,使用以下两个表达式中的任何一个:
*(nextmap.cells + i*NumberOfColumns + j)
nextmap.cells[i*NumberOfColumns + j]
二维数组通常应该作为二维数组来处理。如果没有充分的理由,手动计算位置是不好的做法。如果这个学校作业没有充分的理由,那么这是一个糟糕的任务。