#include <stdio.h>
#include <stdlib.h>
void fun(double *p1,double *p2,double *s)
{
s=(double *)calloc(1,sizeof(double));
*s=*p1 + *p2++;
}
int main()
{
double a[2]={1.1,2.2},b[2]={10.0,20.0},*s=a;
fun(a,b,s);
printf("%5.2lf\n",*s);
return 0;
}
上述代码在vc++6.0中正常执行,输出 1.10,可是在codeblocks 16.01(32位)编译器下输出的却是-0.00,我debug了下也没找出原因,请问这是为什么呢?
我的运行结果也是没问题的,那就是CodeBlock的原因了,建议你一步一步看看内存里发生了什么。
还有你这个程序的目的是什么?是在学习指针吗?