所以我正在尝试编写一个能够在2D批量搜索单词的函数。 该函数返回一个大小为[3]的(int)数组,其值为答案。 这是我的main()函数:
void main() {
char bulk[L][L];
for (int i = 0; i < L; i++) {
for (int j = 0;j < L;j++)
scanf_s(" %c", &bulk[i][j]);
}
int *arr = search(&bulk, L, "bc");
printf("ARR: %d, %d, %d\n", arr[0], arr[1], arr[2]);
}
这是search()函数:
int *search(char(*bulk)[L], int size, char *word) {
int arr[3] = { 0,0,0 };
int flag = 9;
for (int i = 0; i < size; i++) {
for (int j = 0; j < size; j++) {
if (bulk[i][j] == *word) {
if (checkRight(bulk, i, j, word)) flag=0;
}
if (flag != 9) {
arr[0] = i;
arr[1] = j;
arr[2] = flag;
printf("ARR: %d, %d, %d\n", arr[0], arr[1], arr[2]);
return arr;
}
}
}
return arr;
}
checkRight()函数运行良好,如果单词存在于右侧,则返回0/1。问题是两个 printf 正在打印不同的值。
搜索输出():“ARR:0,1,0”。
main()的输出:“ARR:-858993460,-858993460,0”。
我认为它与指针有关但我正在努力寻找问题。有什么想法吗?
非常感谢!
答案 0 :(得分:0)
return arr;
在这里,您将返回数组中第一个值的地址,该地址指向函数搜索的堆栈帧内的临时值。
尝试将arr作为参数传递或使用&#34; static int arr [3]&#34;为了使数组不是临时的。