#include
#include
void fun(int *p1,int *p2,int *s)
{
_s=(int *)malloc(sizeof(int));
*s=*p1+*(p2++);_
}
main()
{
int a[2]={1,2},b[2]={10,20},*s=a;
fun(a,b,s);printf("%d\n",*s);
}
/*
程序运行结果为:
1
*/
====调用C语言fun函数后,*s的值为何没有被修改呢?求指教
如果想要改变指针 s 的指针(而不是指向的内容),函数的参数必须使用指向指针的指针。
s用malloc分配的内存只在函数体内有用,s的值是按值传递,所以穿进去的s的值没有变化。
局部指针变量被重新分配内存地址,地址变了