我初学C++ 谁能给我讲讲viod函数 和 传值传参的问题

我现在是初期阶段 有几个重要的东西不是特别明白
1.我现在对函数中的return理解不是特深,特别对于void函数,不返回值,不是特别明白,不是特别理解其运作方式,还有就是函数中套用循环,数值会不会有变化
2.我对于传值函数, 传参(传引用调用)就是比如(double& 什么什么)理解不是特深,不是特别明白这两种调用方式的区别。
3.还有一个问题就是对于looping的,比如什么if else, while什么的,其中Boolean语句 就是比如bool 什么什么=true 或者false什么的不是特别明白
4.今天遇到一个问题 我就不会怎么设置loop了,我想先设置先保证a,b,c为正,否则就一直问user重新输入,我用了while loop;
然后在大于零的情况下,要求a+b>c, b+c>a, a+c>b, 我设置了while loop,就是说如果a,b,c为正,但是不符合后面的要求的话,也要重新输入数值,如果全符合的话就cout一些话比如cout<<"good"<<endl;之类的
但是我发现如果全符合就会在while loop里面无限循环下去了 出现了满屏幕的"good",对于这个loop中的loop我就不会弄了 希望大家帮忙看一下。

问题很多~~如果有很好的回答的话我愿意加分的,所有的问题最好有编码实例,不要太难的啊 我现在就是iostream, cmath这几个库的水平……所以…… 谢谢

问题1解答:
retrun就是返回的意思,举个例子,比如你请人帮你做一件事,做完后他是不是该给你个答复啊,函数就好比是可以完成某个任务人一样,你调用函数帮你做某事,而它用return把结果返回给你,例程:
//返回值类型为int型,这个函数计算两个参数的和并返回
int sum( int a, int b )
{
return a+b;//计算完把结果返回
}
int k0 = 10;
int k1 = 20;
int c = sum(k0, k1);//执行完这句后c=30,想想为什么
关于void,生活中是不是有这样一种情况,我告诉你去做某事,无论成功失败我都不关心,所以你也不必在做完后跑来告诉我。所以返回值类型为void的函数就不需用return语句返回结果了。
你所说的函数中套用循环,数值会不会有变化,这就要看你的代码了,所以不好回答,要根据具体代码具体分析,这是需要点耐心的。
问题2解答:
引用是变量的代理,所以通过变量的引用也可以访问和修改变量的值,其本质就是变量的地址,但又和指针有所区别,指针可以指向NULL(也就不存在的变量),而引用不能指向NULL。用传引用的方式调用函数,有三个优点,一就是不会像传值调用那样产生对象拷贝,这可以提高性能;二就是具有传指针调用的优点(不会产生对象拷贝),又没有传指针调用的缺点(有时指针指向NULL,所以必须加以检测,要不然就会导致严重错误);三就是通过引用把变量传入函数中,在函数中可以直接修改这个变量的值,这点也是需要用到传指针调用的原因之一。 例程:
void incremental(int& i){++i;} //这个函数把一个int型的变量递增1
int k = 10;
incremental(k); //执行完这句后,k=11, 想想为什么
问题3解答:
if、else是条件分支语句,while是循环语句,bool是一种变量类型,这种类型的变量只能取true、false两个值,也即我们平常所说的是/否(对/错、成功/失败等等),这些都是基础东西,看来你现在不应该学C++,而应该先学C,因为C中没有对象、引用、虚函数等难懂的东西,只有结构化程序设计所必须的东西,因为无论是面向对象啊、抽象设计啊等等多么高级的东西,最基础的内部实现都离不开结构化的程序设计,结构化程序设计是让我们以计算机的思维去思考问题,而面向对象、抽象设计是让计算机以我们的思维方式去解决问题,所以先要熟悉计算机的思维方式,才能让它来摸拟我们的思维方式,先打好基础,再向高级进军就不会那么吃力了,这是我给你的建议。
问题解答4:
你的问题描述的不是太清楚,所以我也无法解答,最好是把你的代码也贴出来,并作详细的注释,我才能帮你分析问题出在哪里。
温馨提示:答案为网友推荐,仅供参考
第1个回答  2009-10-25
1.void类型函数就是无返回值的函数,那么在它内部的return语句后面不能跟参数,只能是return;就是说明函数运行到此就结束返回到调用处,此时也可以没有return语句表示函数运行到结尾才结束返回到调用处.
当函数不是void类型时,例int fun(){...} 那么此函数中必须有return语句返回与函数类型相同(如果不同会进行类型转换,转换成函数类型,如果转换失败就会出错)的一个值,例如前面的定义,可有return 1;这样当运行到这里时函数结束并返回1的值,调用些函数时通常是这样的a=fun();这样如果在return 1;这里返回的那么a==1了.一个函数里可以有多个return语句,但只能执行一次,就是程序最先运行到的(最先运行到的不一定是写在最前面的,指的是实际运行中最先运行的)那个.函数中循环与外面的循环是一样的,对于你说的数值会不会变化指的是变量的值吧,那就看你在循环里是否改变了变量的值.如果你是说传入的参数在下面说明.
2.传值函数就是将参数的数值作为参数传入函数,例fun(int a){...}调用时int b=3;fun(b);此时只将b的值传入了函数fun,就是说b==3但此时的b与a并不是同一变量它们保存在内存的不同空间,也就是在函数内部改变a的值b是不会变的.对于引用是将变量本身传入函数(包括变量的空间).例fun(int &c){...}这样在调用时int b=3;fun(b);此时与c就是同一个变量c==3(它们在内存中的空间是一样的)只是不同名,如果在函数内部对c的值进行更改那么函数外面的b的值也就同样更改了.还有一种就传地址我都写上吧,此时只是将变量在内存的地址传入(注意与引用的区别),例如fun(int * d){...}调用时int b=3;fun(&b);注意此处的&与函数声明时的&引用的不同,此处表示取地址运算,&b结果就是变量b的地址,调用后就将b的地址传给了形参d(是一个指向int型指针)d中保存着b的地址,此时如果单纯改变d的值只表示d中保存的地址变了,也就是说不在是b的地址了.若要改变b我们一般用的是(*d),表示取d中保存着的内存地址所指向的内存(注意区分d本身的存储空间与它所指向的存储空间的区别)空间的数据.
3.Boolean语句就是能判断真假的语句(就是高中学的命题,有点像,呵呵)它的结果要么是真(成立或都说条件满足)要么是假(不成立或者说条件不满足),也就是bool型结果(如果类型不是bool就会进行类型转换,因为我们多见是形如 int a=3;if(a){...},此时就是先将a的值3转换成bool型true然后再运算,此时也相当于if((bool)a==true){...}).
4.要用循环一定要注意循环是如何结束的,如果没有结束的条件(或者说条件不会发生)就会产生死循环.
此题中a,b,c都要为正,不满足就得循环,这是循环(进入循环)的条件(a<=0 |b<=0 |c<=0)所以此种情况一般是先给a,b,c一个能进入循环(满足进入循环条件)的值,例如a=-1,b=0,c=1;(当然只有一个a=-1;就够了)可写成
a=-1;
while(a<=0 | b<=0 |c<=0){
循环要做的事
}
退出循环条件当然就是(a<=0 |b<=0 |c<=0)不满足了,这个循环是可以结束的
循环要做的事:重新输入a,b,c
写成了
a=-1;
while(a<=0 | b<=0 |c<=0){
cin>>a>>b>>c;
}
最后是满足了全为正的条件,就是退出循环了
然后是要判断是否满足第二个条件,如果满足输出提示
写成
a=-1;
while(a<=0 | b<=0 |c<=0){
cin>>a>>b>>c;
}
if(a+b>c&&b+c>a&&a+c>b){
cout<<"good"<<endl;
}
这样你要的功能就完成了.
呵呵,仅供参考!
第2个回答  2009-10-25
1 void是空函数,也就是不能被调用。其应用主要是主函数即main时。return是为了得到一解决方法或算法而使用返回值类型。通常含return语句的函数会主函数中被调用;
2 if else都是比较简单常用的基本语句建议你多看书本.bool是一种类型称为布尔类型只有两个值true 和 falseBoolean语句就是能判断真假的语句(就是高中学的命题,有点像,呵呵)它的结果要么是真(成立或都说条件满足)要么是假(不成立或者说条件不满足),也就是bool型结果(如果类型不是bool就会进行类型转换,因为我们多见是形如 int a=3;if(a){...},此时就是先将a的值3转换成bool型true然后再运算,此时也相当于if((bool)a==true){...});
3 传值函数就是将参数的数值作为参数传入函数,例fun(int a){...}调用时int b=3;fun(b);此时只将b的值传入了函数fun,就是说b==3但此时的b与a并不是同一变量它们保存在内存的不同空间,也就是在函数内部改变a的值b是不会变的.对于引用是将变量本身传入函数(包括变量的空间).例fun(int &c){...}这样在调用时int b=3;fun(b);此时与c就是同一个变量c==3(它们在内存中的空间是一样的)只是不同名,如果在函数内部对c的值进行更改那么函数外面的b的值也就同样更改了.还有一种就传地址我都写上吧,此时只是将变量在内存的地址传入(注意与引用的区别);
4a,b,c都要为正所以此种情况一般是先给a,b,c一个能进入循环的值,例如a=-1,b=0,c=1;(当然只有一个a=-1;就够了)可写成
a=-1;
while(a<=0 | b<=0 |c<=0){
循环要做的事
}
退出循环条件当然就是(a<=0 |b<=0 |c<=0)不满足了,这个循环是可以结束的
循环要做的事:重新输入a,b,c
写成了
a=-1;
while(a<=0 | b<=0 |c<=0){
cin>>a>>b>>c;
}
最后是满足了全为正的条件,就是退出循环了
然后是要判断是否满足第二个条件,如果满足输出提示
写成
a=-1;
while(a<=0 | b<=0 |c<=0){
cin>>a>>b>>c;
}
if(a+b>=0&&b+c>=0){
cout<<"good"<<endl;
}
第3个回答  2009-10-25
1.void函数表示无返回值函数,是指这个函数的类型。如果用到return必须函数类型不为void。 函数定义的时候就有格式。如 类型名 函数名(参数类型 参数名。。。。。)函数中套用循环,当然会变,他每次还回值也不一定相同。。。
2.引用就相当于把这个函数参数起了一个小名,就像人有大名和小名一样,其实只是相同的。
3.if else while....都是几大语句中的,你看可以看看C++书有详细介绍。bool是一种类型称为布尔类型只有两个值true 和 false和但是不能用1,0 替代。。。
4.loop就是一个变量作为判断条件,如果是要输入loop值得话,肯定是当loop大于0执行循环,否则不执行循环。。。
相似回答