我注意到下面的函数:
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
所以,如果你真的看到了你说你看到的东西,而我除了我自己丰富的经验之外没有真正的理由怀疑你:-),问题出在别处。
在这种情况下,你需要给我们显示错误行为的最小的完整程序。