65,190
社区成员




class Student
{
public:
int age;
char * name;
void set(int age, char* name)
{
this->age = age;
this->name = name;
}
};
class Student
{
public:
int age;
char * name;
void set(int age, char* name)
{
this->age = age;
int len = strlen(name);
this->name = new char[len+1];
strcpy(this->name,name);
}
};
int main(int argc, char* argv[])
{
char * n = "abcddefg";
Student st ;
st.set(18,n);
(*n) = 'x';
cout<<st.age<<st.name<<endl;
cout<<&(st.name)<<endl;
cout<<(*n) <<endl;
return 0;
}
为什么如果是指针的话,通过指针去将第一个字符变成x,程序就会崩溃呢?
int main(int argc, char* argv[])
{
char * n = "zou";
Student st ;
st.set(18,n);
n = "quan";
cout<<st.age<<st.name<<endl;
cout<<&(st.name)<<endl;
cout<<&(n)<<endl;
return 0;
}
打印后的地址根本不是我传入的那个参数地址,这里是按值传递的,并不是按地址传的。