【发布时间】:2012-04-25 23:23:47
【问题描述】:
我在使用数组和指针时遇到问题,虽然我很瘦,但我知道自己做错了什么,但我无法找到简单的解决方案。
我有这段代码:
void faceRotateACW(char *face[CUBE_DIM][CUBE_DIM]){
char tempFace[CUBE_DIM][CUBE_DIM];
for (int y=0;y<CUBE_DIM;y++){
for (int x=0;x<CUBE_DIM;x++){
tempFace[y][CUBE_DIM-x]=face[x][y];
}
}
for (int a=0;a<CUBE_DIM;a++){
for (int b=0;b<CUBE_DIM;b++){
face[a][b]=tempFace[a][b];
}
}
}
现在我知道问题在于我正在尝试将 char 指针分配给 char,这是不行的,但是我如何复制,然后修改数组并将其推回传递的数组参考?如何获取要传递给函数的数组中的值?
好的,一切顺利,至少我现在开始更好地理解这个问题(谢谢大家)。我需要提供更多信息,因为我使用此功能的方式可能也不是最好的方式,让我澄清一下。
我将数组定义为:
char *faces[NUM_FACES][CUBE_DIM][CUBE_DIM]={{{"o","o","o"},{"o","o","o"},{"o","o","o"}},
{{"o","o","o"},{"o","o","o"},{"o","o","o"}},
{{"o","o","o"},{"o","o","o"},{"o","o","o"}},
{{"o","o","o"},{"o","o","o"},{"o","o","o"}},
{{"o","o","o"},{"o","o","o"},{"o","o","o"}},
{{"o","o","o"},{"o","o","o"},{"o","o","o"}}};
但是,当我调用该函数时,我试图像这样剥离外部数组:
faceRotateACW(faces[currentFace]);
对不起,我是第一次发帖:)
【问题讨论】:
-
不太清楚你想做什么 - 你想传递一个字符指针数组(也就是矩阵)并简单地在你的矩阵中交换这些字符指针吗?如果是这样,为什么要创建字符矩阵而不是字符指针矩阵?
-
我正在尝试传入矩阵值,旋转它们并替换传入的值。我传递的是指针而不是矩阵中的值吗?
-
问题是这些值实际上是什么。值是
chars 还是char *s?如果他们是chars,请阅读 Johns 的答案,如果他们是char *s,请阅读 dbaupps 和 Yakovs 的答案。或者我在开玩笑 - 阅读所有答案! ;) -
@PhilHolden - 所以你的参数是二维字符串数组,签名是 ->void faceRotateACW(char* face[CUBE_DIM][CUBE_DIM]) 我的解决方案处理这种情况
标签: c arrays pointers multidimensional-array pass-by-reference