标签:void http 内存地址 info sig 下标 .com 内存 维数
做一道DP的题目,需要标记二维数组中,以某个点为中心边上的八个点(象棋中的“马”下一步可走的位置),然后是这样写的。
void make_mark(int x,int y) { sign[x - 1][y - 2] = 1; sign[x - 1][y + 2] = 1; sign[x + 1][y + 2] = 1; sign[x + 1][y - 2] = 1; sign[x + 2][y - 1] = 1; sign[x + 2][y + 1] = 1; sign[x - 2][y - 1] = 1; sign[x - 2][y + 1] = 1; sign[x][y] = 1; }
好像是没什么,但是没有处理下标越界的问题。然后OJ还过了。然后我仔细研究了一下。它们的内存地址是连续的,然后数组等价于指针呐,那就很好理解了。
红线内的1,从上往下是sign[x-2][y-1],sign[x-1][y-2],sign[x+1][y-2],sign[x+1][y+2]。
至于OJ过了的原因,因为我数组开大了几个,这几个 1 没有影响。
除非你能几个数组确保不会越界,不会影响到题目,否则还是好好做越界判断好一点。
标签:void http 内存地址 info sig 下标 .com 内存 维数
原文地址:https://www.cnblogs.com/czc1999/p/10361280.html