#include<iostream>
using namespace std;
void fun(int *p)
{
int b = 100;
p = &b;
cout << "p is:" << p<<" " << *p << endl;
}
int main()
{
int a = 10;
int *q;
q = &a;
cout <<q<<" "<< *q << endl;
fun(q);
cout << q << " " << *q << endl;
cout << a << endl;
system("pause");
return 0;
}
我对这段程序的理解在fun函数中b的地址赋给p了,为什么调用之后,q的地址不变。
#include<iostream>
using namespace std;
void fun(int *p)
{
int b = 100;
cout << p << endl;
p = &b;
cout << "&b is:" << &b << endl;
cout << "p is:" << p<<" " << *p << endl;
*p = 100;
cout << "&p is:" << &p << " " << *p << endl;
cout << "p is:" << p << " " << *p << endl;
}
int main()
{
int a = 10;
int *q;
q = &a;
cout <<q<<" "<< *q << endl;
fun(q);
cout << q << " " << *q << endl;
cout << a << endl;
system("pause");
return 0;
}
5.当形参和实参不是指针类型时,在该函数运行时,形参和实参是不同的变量,他们在内存中位于不同的位置,形参将实参的内容复制一份,在该函数运行结束的时候形参被释放,而实参内容不会改变。
而如果函数的参数是指针类型变量,在调用该函数的过程中,传给函数的是实参的地址,在函数体内部使用的也是实参的地址,即使用的就是实参本身。所以在函数体内部可以改变实参的值。