我注意到以下功能:
void myFunction(char *myString)
{
myString[0] = 'H';
}
实际上不会修改 myString。但是,此功能会:
void myFunction2 (char *myString)
{
*myString = 'H';
}
我很清楚为什么 myFunction2 有效,但我不确定为什么 myFunction 无效。你能解释一下吗?
更新:不用等待。它工作正常。我很笨。我可以删除这个东西吗?
我注意到以下功能:
void myFunction(char *myString)
{
myString[0] = 'H';
}
实际上不会修改 myString。但是,此功能会:
void myFunction2 (char *myString)
{
*myString = 'H';
}
我很清楚为什么 myFunction2 有效,但我不确定为什么 myFunction 无效。你能解释一下吗?
更新:不用等待。它工作正常。我很笨。我可以删除这个东西吗?
不,我不认为你是对的。如果输入以下代码:
#include <iostream>
void fn1 (char *s) { *s = 'a'; }
void fn2 (char *s) { s[0] = 'a'; }
int main (void) {
char str1[] = "hello";
char str2[] = "goodbye";
fn1 (str1); std::cout << str1 << std::endl;
fn2 (str2); std::cout << str2 << std::endl;
return 0;
}
你会发现这两个函数都很好地修改了它们的数据,产生:
aello
aoodbye
所以,如果你真的看到了你所说的,除了我自己丰富的经验之外,我没有真正的理由怀疑你:-),问题出在其他地方。
在这种情况下,您需要给我们展示错误行为的最小完整程序。