我是新手。我有点怀疑。希望有人能帮助我。 我将指针作为参数传递给函数。在函数内部我改变它 - >它已经改变了。但是在输出与函数调用之前相同之后。这里有什么问题?
#include <string.h>
#include <iostream>
using namespace std;
// works fine
void chgInt(int *p){
*p=10+*p;
}
// does not works!
void chgStr(char* name){
name="newName";
}
int main(void){
int i=6;
char *name="oldName";
cout<<"Name before: "<<name<<endl;
chgStr(name);
cout<<"Name After "<<name<<endl;
cout<<"integer is :"<<i<<" and f(integer) is :";
chgInt(&i);
cout<<i<<endl;
return 0;
}
答案 0 :(得分:0)
如果你使用c ++你应该使用库std :: string而不是string.h(在c中使用)但是如果你使用c那么你应该使用printf()和这样的c函数
关于这个问题: 我不想错过引导你,但你可以去阅读关于指针和指针的指针(在这种情况下指向字符串(字符数组))
但一般来说问题是你改变了字符串的值,但它只是在值的内存中不是相同的字符串。
您可以通过将功能更改为
来解决此问题void chgStr(char** name){
*name="newName";
}
并通过它的指针传递字符串
chgStr(&name);