主函数中定义的指针,经过函数调用常规情况下不会发生任何变化,因为函数在调用完之后就会自动释放函数中的局部动态变量
#include "iostream"
using namespace std;
void test(int *x);
int main(){
int *x=new int;
*x=1;
cout<<"Before test:"<<*x<<endl<<endl;
test(x);
cout<<"After test:"<<*x;
return 0;
}
void test(int *x){
int *temp=new int;
*temp=7;
x=temp;
//下面这种格式也是不行的
int temp=7;
x=&temp;
}
也就是如果函数内部没有static静态变量 所有值都是无法被保存下来的
只有对主函数中传进来的指针直接进行值修改才能让函数改变主函数的指针内容
#include "iostream"
using namespace std;
void test(int *x);
int main(){
int *x=new int;
*x=1;
cout<<"Before test:"<<*x<<endl<<endl;
test(x);
cout<<"After test:"<<*x;
return 0;
}
void test(int *x){
int temp=7;
*x=temp;
}