数据初始化疑问

r_x_y 2011-04-15 09:33:15
大家好:
我实验一下“带简单输出参数的函数”。
函数的流程:main里面创建一个double类型值和一个int类型值,将它们的引用传递给separete函数,将结果保存在int类型值里面。separete函数的用途是将double的整数部分取出,赋值给int。
separate形如:void separate(double num, int *wholep);
第一种方法:

void separate(double num, int *wholep);

int
main(void)
{
double num=222.2222;
int *wholep; //声明为int *
separate(num, wholep);
printf("The whole part is %d\n", *wholep);
}

void separate(double num, int *wholep)
{
*wholep = floor(num);
}
==========================================
第二种:
void separate(double num, int *wholep);

int
main(void)
{
double num=222.2222;
int wholep; //声明为int类型
separate(num, &wholep);
printf("The whole part is %d\n", wholep);
}

void separate(double num, int *wholep)
{
*wholep = floor(num);
}

疑问:
一:为什么第二种方法能够按照要求输出结果,而第一种不能?
难道是第一种情况下,没有分配int存储空间??
二:程序编译时,参数的空间如何分配??

我是linux c 初学者,望给以指点。
...全文
68 3 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
r_x_y 2011-04-16
  • 打赏
  • 举报
回复
谢谢两位,了然。
justkk 2011-04-15
  • 打赏
  • 举报
回复
int *wholep; //声明为int *
第一种情况,你没有为指针分配空间,它是一个无效内存,当然程序失败了

可以分配空间就行了
在separate()之前加一句
wholep = (int *)malloc(sizeof(int));
时间一粒 2011-04-15
  • 打赏
  • 举报
回复
因为指针可以动态分配内存.有时候,我们不可能可以预计我们到底需要多少个变量,这个时候我们就需要动态的来

创建变量.就需要用到指针.

而变量是不可以的。

23,217

社区成员

发帖
与我相关
我的任务
社区描述
Linux/Unix社区 应用程序开发区
社区管理员
  • 应用程序开发区社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧