从函数C ++传递指针只会更改函数得分中的值

时间:2017-11-09 17:34:24

标签: c++ pointers

我是新手。我有点怀疑。希望有人能帮助我。 我将指针作为参数传递给函数。在函数内部我改变它 - >它已经改变了。但是在输出与函数调用之前相同之后。这里有什么问题?

#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;
}

1 个答案:

答案 0 :(得分:0)

如果你使用c ++你应该使用库std :: string而不是string.h(在c中使用)但是如果你使用c那么你应该使用printf()和这样的c函数

关于这个问题: 我不想错过引导你,但你可以去阅读关于指针和指针的指针(在这种情况下指向字符串(字符数组))

但一般来说问题是你改变了字符串的值,但它只是在值的内存中不是相同的字符串。

您可以通过将功能更改为

来解决此问题
void chgStr(char** name){
*name="newName";
}

并通过它的指针传递字符串

chgStr(&name);