【发布时间】:2013-03-03 03:58:52
【问题描述】:
我试图让一个函数获取一些从我的 main() 函数传递过来的整数指针并为它们赋值。但是,我的程序在分配值时崩溃。这是我的代码:
int computeMoveLocation(int* r, int* c, char* board)
{
//some code up here
*r = 0; //This breaks the program
*c = 0;
}
我不是要更改指针的地址——我是要更改所指向的整数的值。但是,我显然做错了什么。
任何帮助将不胜感激。
编辑: 这是来自 main() 的相关代码。请让我知道我是否还应该包含其他任何内容。
int main()
{
//initialization code
//...
while (1)
{
switch (MACHINE_STATE)
{
case COMPUTER_MOVE :
{
//check rows for three Xs
//check columns for three Xs
//check diagonals for three Xs
//otherwise, move anywhere else
int *r, *c;
computeMoveLocation(r, c, board);
computerMove(*r,*c, board);
PREVIOUS_STATE = COMPUTER_MOVE;
MACHINE_STATE = HUMAN_MOVE;
break;
}
//Other cases
}//end switch
}//end while
}//end main
【问题讨论】:
-
显示主函数以及你是如何传递指针的。
-
请告诉我们您如何调用computeMoveLocation? r、c 和 board 传递什么?
-
你是否分配了
r、c和board指向的内存? -
欢迎来到 Stack Overflow。请尽快阅读FAQ。对于这样的问题,问题不在于您显示的行;它要么在代码的“此处的一些代码”部分中,要么在调用此函数的代码中(或两者兼而有之)。您需要提供一个 SSCCE (Short, Self-Contained, Correct Example) 以便我们可以看到是什么导致了问题,因为问题不在您显示的代码中。
-
上面的代码似乎没有错,您是否将正确的地址传递给函数,例如 compute(&var,&var1,&var2) 而不是 compute(var,var1,var2)
标签: c pointers pass-by-reference