【发布时间】:2017-10-19 15:23:20
【问题描述】:
int* path = malloc(sizeof(int)*4));
switch(one) {
case NORTH:
switch(two) {
case NORTH:
memcpy(path, ((int[4]){7, 8, 9, 10}), sizeof(int)*4);
break;
case WEST:
memcpy(path, ((int[4]){9, 10, 11, 12}), sizeof(int)*4);
break;
case SOUTH:
memcpy(path, ((int[4]){1, 2, 3, 4}), sizeof(int)*4);
break;
case EAST:
memcpy(path, ((int[4]){7, 8, 9, 10}), sizeof(int)*4);
break;
case MAX_DIRECTION:
return NULL;
}
case WEST:
switch(two) {
case NORTH:
memcpy(path, ((int[4]){7, 8, 9, 10}), sizeof(int)*4);
break;
case WEST:
memcpy(path, ((int[4]){1, 2, 2, 3}), sizeof(int)*4);
...
...
return path
对于此示例,对于 NORTH、WEST、SOUTH、EAST 的每种情况,依此类推。想法是您将一和二传递给函数,它将返回一个与正确值 ex 相对应的整数数组。 [北][西] = [9, 10, 11, 12]。 为了简洁起见,我将 NORTH 定义为 EAST,分别为 0-3。
我的想法是将它作为多维数组。 例如,用户将传入 0,1。它会访问对应于 0(NORTH)的第一个数组,然后它会访问对应于 1(WEST)的第二个数组,并返回所需的数组。
我已经尝试了几件事,但唯一对我来说立即有意义的事情是声明然后一一分配数组的每个索引。不知道如何一次完成所有事情并完成我想要的。
非常感谢任何帮助。
【问题讨论】:
标签: c arrays multidimensional-array switch-statement