用户名
有这个片段
int main() {
char *obstacles[3*3]
char map[3][3] = {'D','*',' ',' ',' ',' ','*',' ',' '};
int k = 0;
for (int i = 0; i < 3; i++) {
for (int j = 0; j < 3; j++) {
if (map[i][j] == '*')
obstacles[k++] = &map[i][j];
}
}
return 0;
}
导致我出现这种情况:
如何将该数组缩小为k
-cells数组?
马克·博内利
如果您的数组声明为固定大小,那么您将无能为力。它的大小是在编译时选择的,您无法在程序运行时对其进行修改。但是,如果您确实愿意,可以使用malloc()
和realloc()
。我确实没有这样做的充分理由:它只有9个指针,减少它不会有任何优势。
您可以将数组初始化为char *obstacles[3*3] = {NULL}
(所有单元格都设置为NULL
),然后NULL
在扫描它时在第一个单元格处停止。这是避免传递数组大小的常用方法。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
编辑于
我来说两句