#include
#include
void fun(int p1,int *s)
{
int *t;
t=(int *)malloc(2*sizeof(int));
*t=*p1+*p1++;
*(t+1)=*p1+*p1;
s=t;
}
main()
{
int a[2]={1,2},b[2]={0};
fun(a,b);
printf("%d,%d\n",b[0],b[1]);
}
/
程序运行结果为:
0,0
*/
=======调用fun函数后,b的地址改变了,为何主函数打印出来的值没有改变呢?这个地址传递,怎么没改变元素的值呢?怎么样才能改变b的元素值呢?
void fun(int p1,int *s)
b的地址不会变
void fun(int p1,int *& s)
这样才会
b的地址并没有变,fun里改变的是s的值,而s是局部变量,不会影响b。如果想在fun里改变b,可以用*s表示b[0]...,或者把b的地址传进去。