关于calloc
发布网友
发布时间:2024-10-23 23:30
我来回答
共1个回答
热心网友
时间:2024-10-25 06:20
//貌似这个子函数目的想令主函数的*s 变成a[x] + b[y] x,y 值由主函数调用参数来确定,并令指针移动到b[y+1]
//但实际上实现不了,函数参数都是实参,也就是所有改动均不能影响主函数内的变量
//申请了新的空间,但没释放,也没传给主函数,会有内存泄露问题
void fun(double*p1,double*p2,double*s)
{
s=(double*) calloc (1,sizeof(double));
*s=*p1+*p2++; //新申请的空间存放 *p1+*p2 但这个值随函数结束就丢失了。
}
int main(int argc, char *argv[])
{
double a[2]={1.1,2.2},b[2]={10.0,20.0},*s=a;
fun(a,b,s); //这个函数对p1 p2 s没有任何影响
printf("%5.2f\n",*s); //这里的*s还是指向main开始定义时的a[0] ,所以输出就是a[0]
}