相同代码在不同编译器下的执行问题?

发布于 2022-09-05 23:42:38 字数 526 浏览 28 评论 0

#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了下也没找出原因,请问这是为什么呢?
图片描述

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(4

水晶透心 2022-09-12 23:42:38

我的运行结果也是没问题的,那就是CodeBlock的原因了,建议你一步一步看看内存里发生了什么。
还有你这个程序的目的是什么?是在学习指针吗?

别挽留 2022-09-12 23:42:38

没有特别看明白你这个程序的目的是干嘛?是验证calloc的什么东西?

另外调用fun的目的是什么,指针s传入之后又重新赋值了,也就是说你最终调用的*s就是a[0]的值,fun的调用对最终输出没啥影响

树深时见影 2022-09-12 23:42:38

你这个代码明显有问题,你确定两个编译器里写的同样的代码吗?依我看,那个函数的第三个参数s应该是一个二级指针或者指针的引用。

掐死时间 2022-09-12 23:42:38

你这个有点像easyui的treegrid、为什么不用easyui框架来布局呢

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文