网页资讯视频图片知道文库贴吧地图采购
进入贴吧全吧搜索

 
 
 
日一二三四五六
       
       
       
       
       
       

签到排名:今日本吧第个签到,

本吧因你更精彩,明天继续来努力!

本吧签到人数:0

一键签到
成为超级会员,使用一键签到
一键签到
本月漏签0次!
0
成为超级会员,赠送8张补签卡
如何使用?
点击日历上漏签日期,即可进行补签。
连续签到:天  累计签到:天
0
超级会员单次开通12个月以上,赠送连续签到卡3张
使用连续签到卡
09月13日漏签0天
c++吧 关注:632,834贴子:2,114,594
  • 看贴

  • 图片

  • 吧主推荐

  • 游戏

  • 9回复贴,共1页
<<返回c++吧
>0< 加载中...

关于calloc函数的问题

  • 只看楼主
  • 收藏

  • 回复
  • 啃竹子的先生
  • =
    2
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
遇到了一个问题。程序如下:#include<stdlib.h>
#include<stdio.h>
void fun(float *p1,float *p2,float *s)
{
s=(float*) calloc (1,sizeof(float));
*s=*p1+*p2++;
}
void main()
{
float a[2]={1.1,2.2},b[2]={10.0,20.0},*s=a;
fun(a,b,s);printf("%5.2f\n",*s);
}
输出结果是:1.10
可是,我觉得答案应该是:11.10
调试程序之后,发现是calloc函数那里貌似有点疑惑。
跪求解释~~为什么是1.10?!!!


  • 娜迦女妖
  • <<
    12
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
s=(float*) calloc (1,sizeof(float)); 这个是关键,这句执行后,s已经指向其他地方了,改变*s改变不了实参的值,还是指向a的


2025-09-13 14:40:14
广告
不感兴趣
开通SVIP免广告
  • 须臾之梦Z
  • &&
    6
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
你main函数下的s里是数组a的首地址,但是在函数fun里动态分配了一块内存给了fun函数中的临时浮点型指针变量s(在你这里等于说先给在fun函数中作为参数的临时float型指针变量赋了main函数下s指针的值,然后又动态分配的块内存 将这块内存给赋给了它 等于说是覆盖掉了原先所指向的地址) 然后将计算结果给了这个s,所以对main下的s完全没任何影响,因为main中的s的值是数组a的首地址 所以在以float类型打印时打印出的就是数组a的第一个元素


  • 啃竹子的先生
  • =
    2
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
谢谢了~~~!!!!就是你们说的这样。
calloc这个函数略蛋疼~~呵呵,二级考试故意难道我们~~意义不明。。。


  • 贴吧用户_0aX3aA7128
  • <<
    12
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
谁会写这种垃圾代码?


  • 啃竹子的先生
  • =
    2
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
诶~~二!!级考试。。。大家理解一下


登录百度账号

扫二维码下载贴吧客户端

下载贴吧APP
看高清直播、视频!
  • 贴吧页面意见反馈
  • 违规贴吧举报反馈通道
  • 贴吧违规信息处理公示
  • 9回复贴,共1页
<<返回c++吧
分享到:
©2025 Baidu贴吧协议|隐私政策|吧主制度|意见反馈|网络谣言警示