【发布时间】:2021-03-04 19:06:40
【问题描述】:
我正在尝试访问结构内二维数组每一行的最后一个元素。我正在尝试确定特定字符是否在该位置,但我不知道如何访问该特定元素。
我的未完成代码:
typedef struct node {
char grid[MAXGRIDHW][MAXGRIDHW];
int height;
int width;
int parent;
} Node;
bool emptyEnd (Node *b)
{
int x, y;
char lastEle = ;
for (y = 0; y <= b->height; y++) {
for (x = 0; x <= b->width; x++) {
if (lastEle == '-') {
return true;
} else {
return false;
}
}
}
}
【问题讨论】:
-
C 循环运行
for (y = 0; y < b->height; y++),使用<而不是<=。 99% 的情况下,使用<=而不是<是一个错误。 -
这个
char lastEle = ;应该报错了,你编译了吗? -
另请注意,在外循环的第一次迭代中,您在内循环的第一次迭代中无条件地从函数返回——使循环完全没有必要。您可能希望保留
return true;并完全删除else子句,在循环体后添加return false;。 -
如果我需要循环运行直到它等于数组的高度怎么办?
-
数组中有效元素的索引为 0, 1, ... MAXGRIDHW-1;访问索引 MAXGRIDHW 正在越界访问数组,导致未定义的行为。这就是为什么
<=是错误的。