当前位置: 技术问答>linux和unix
数据初始化疑问
来源: 互联网 发布时间:2016-11-22
本文导语: 大家好: 我实验一下“带简单输出参数的函数”。 函数的流程:main里面创建一个double类型值和一个int类型值,将它们的引用传递给separete函数,将结果保存在int类型值里面。separete函数的用途是...
大家好:
我实验一下“带简单输出参数的函数”。
函数的流程: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 %dn", *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 %dn", wholep);
}
void separate(double num, int *wholep)
{
*wholep = floor(num);
}
疑问:
一:为什么第二种方法能够按照要求输出结果,而第一种不能?
难道是第一种情况下,没有分配int存储空间??
二:程序编译时,参数的空间如何分配??
我是linux c 初学者,望给以指点。
我实验一下“带简单输出参数的函数”。
函数的流程: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 %dn", *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 %dn", wholep);
}
void separate(double num, int *wholep)
{
*wholep = floor(num);
}
疑问:
一:为什么第二种方法能够按照要求输出结果,而第一种不能?
难道是第一种情况下,没有分配int存储空间??
二:程序编译时,参数的空间如何分配??
我是linux c 初学者,望给以指点。
|
因为指针可以动态分配内存.有时候,我们不可能可以预计我们到底需要多少个变量,这个时候我们就需要动态的来
创建变量.就需要用到指针.
而变量是不可以的。
创建变量.就需要用到指针.
而变量是不可以的。
|
int *wholep; //声明为int *
第一种情况,你没有为指针分配空间,它是一个无效内存,当然程序失败了
可以分配空间就行了
在separate()之前加一句
wholep = (int *)malloc(sizeof(int));
第一种情况,你没有为指针分配空间,它是一个无效内存,当然程序失败了
可以分配空间就行了
在separate()之前加一句
wholep = (int *)malloc(sizeof(int));