gpt4 book ai didi

C - 在函数之间传递数组未给出预期结果

转载 作者:行者123 更新时间:2023-11-30 14:32:49 26 4
gpt4 key购买 nike

我正在尝试将 char 数组从一个函数传递到另一个函数。该数组似乎传递到第二个函数,但除了第一个元素之外,数组的内容似乎丢失了?为了解决这个问题,我尝试将传递的数组的内容复制到被调用函数中的新的本地数组中,但这引发了将新数组传递回原始调用函数并将其值分配回原始传递的问题在数组中。

我的指针可能完全错误,我仍在掌握 C 中的指针,因此一直遵循 IDE 的提示,直到它停止抛出错误。

这是我调用该函数的方式:

wordCheck(charIn, randWord, currentWordStatus);

要更新/修改的数组是 currrentWordStatus 数组。

这是数组传入函数时的内容:

这是它在函数中的实际结果:

这是我调用的函数的代码:

void wordCheck(char guess, char *wordToGuess, char *currentWordStatus) {

int wordLen = strlen(wordToGuess);
char wordArr[wordLen];
strcpy(&wordArr[0], wordToGuess);
bool found = false;

for (int i = 0; i < wordLen; i ++) {
printf("%c \n", (char)wordArr[i]);
if ((char) wordArr[i] == guess) {
found = true;
currentWordStatus[i] = guess;
}
}
}

我想知道我做错了什么,我希望直接修改函数,因为它是通过“引用”传递的(我知道它是指向数组开头的指针),而不是必须在函数内部重新创建数组并将其传回。

希望这有某种意义?

非常感谢

最佳答案

在该函数中,您真正拥有的只是指向数组第一个元素的指针。程序(或编译器,正如您所注意到的,甚至调试器)并不真正知道函数内部的指针真正指向什么。

没有什么问题,这只是 C 以及 C 中的数组和指针的工作方式。

关于C - 在函数之间传递数组未给出预期结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59668158/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com