#include <iostream>
using namespace std;
void fun(int* p1, int* p2, int* t)
{
t = (int*)malloc(sizeof(int));
cout << "fun:t,address: " << &t << endl;
*t = *p1 + *(p2++);
}
int main()
{
int a[2] = { 1,2 };
int b[2] = { 10,20 };
int* t = a;
fun(a, b, t);
cout << "main:t,address: " << &t << endl;
cout << *t << endl;
return 0;
}
输出结果:
分析:malloc会在堆中重新为局部变量t分配内存,两个变量的内存地址是不一样的,修改局部变量t的内容,不影响全局变量指针t所指地址的内容。