c语言中函式里是不是遇到return语句就不再执行函式剩下的内容直接返回了?以下文字资料是由(历史新知网www.lishixinzhi.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!
c语言中函式里是不是遇到return语句就不再执行函式剩下的内容直接返回了?
嗯,是这样的,不过return只能退出当前函式,如果多个函式巢状就不行了,要想整个退出用exit
例如:
fun1(){
return;
printf("fun1") ;
}
fun2(){
fun1();
printf("fun2") ;
}
main(){
fun2();
}
此时main函式呼叫fun2,然后fun2呼叫fun1,fun1直接return了,fun1没有列印,但是fun2列印了,如果想不列印fun2,把fun1里面的return改为exit就好了
C语言中函式返回值遇Return的关系!
1. 函式的值只能通过return语句返回主调函式。
2.直接输出地数值能否在本函式中直接使用,要看你定义的变数型别了。如果是全域性变数,就可以;如果是区域性变数,只能在给出定义的函式内使用。
c语言中,如果在子函式中执行了return语句,是否就不管后面有无语句而结束此函式的呼叫?
是的
遇到 return 函式直接返回,后续程式码无法执行
在C语言中, 不等待被呼叫函式返回,就继续执行下一条语句
建立一个子执行绪,将函式的内容放进去。这样主执行绪会继续执行下面的程式码,子执行绪会执行函式的内容
C语言: 子函式中有while回圈,while回圈中最后有return语句,这个return语句返回的是不是子函式的值?
return 可以返回值 也可以什么值都不返回 这得看 函式 返回值型别是不是 void 还是 int 、double、其他............
反正 return 将导致 函式呼叫的结束
C语言中,函式有无返回值是不是就是由函式宣告语句中的int或void等来决定?
无返回值可以在子函式前加上void,返回值需要用到语句return,没有该语句,则不返回
在java中是不是碰到return就不执行下面剩余的语句直接返回
除开try{}catch{}finally{System.out.println("aaa")}
放在try块或者catch块里面的return都不会对finally产生影响,也就是说finally块里面的语句一定会执行,其他地方,一旦return 后面的都不会在执行了
在C语言中,呼叫函式时用return语句一般能返回几个值?
你好,C语言中返回值只能有一个。但可以通过返回指标的方式间接返回阵列等。
C语言中函式呼叫怎么返回两个值
可以使用阵列引数、全域性变数、或是指标的方法、还有引用的方法。
c语言中函式能返回一个数组吗?
不能直接返回一个数组,但是可以用其他方式实现类似功能。
方法1:利用全域性变数
分析:全域性变数作为C语言的一个知识点,虽然我们都了解它的特点,但在实际教学过程中应用得并不是很多。由于全域性变数的作用域是从定义变数开始直到程式结束,而对于编写有多个返回值的C语言函式,我们可以考虑把要返回的多个值定义成全域性变数。当函式被呼叫时,全域性变数被更改,我们再把更改后的全域性变数值应用于主调函式中。函式被呼叫后被更改后的全域性变数值即为函式的数个返回值。下面以一个例项演示该方法的应用。
例项1:编写函式求3个数中的最大值与最小值。
方法:把最大值、最小值分别定义成2个全域性变数max、min,在使用者自定义函式中把求出来的最大值与最小值分别赋给全域性变数max、min。函式呼叫完毕后全域性变数的max、min值即储存了函式要求返回的值。程式参考程式码如下:
#include "stdio.h"
#include "conio.h"
int max,min;/*定义两个全域性变数用于储存函式返回值*/
void max_min(int a,int b,int c) /*定义求最大最小值的函式*/
{max=min=a; /*初始化最大最小值*/
if(max if(max if(min>b)min=b;
if(min>c)min=c;
}
main()
{int x,y,z;
printf(" 请输入3个整数:\n");
scanf("%d,%d,%d",&x,&y,&z);
max_min(x,y,z) ;/*呼叫求最大值与最小值的函式*/
printf("三个数中的最大值为:%d;最小值为:%d",max,min);/*输出最大值与最小值*/
getch();
}
除错结果如下:
请输入3个整数:
5,-6,2
三个数中的最大值为:5;最小值为:-6
注意:该方法虽然可以实现有多个返回值的函式,但由于全域性变数不能保证值的正确性(因为其作用域是全域性,所以程式范围内都可以修改它的值,如果出现错误将非常难以发现),并且全域性变数增加了程式间模组的耦合,所以该方法要慎用。
方法2:传递阵列指标
分析:在教学过程中,我们知道C语言函式引数的传递方式有值传递与地址传递。当进行值传递时,主调函式把实参的值复制给形参,形参获得从主调函式传递过来的值执行函式。在值传递过程中被调函式引数值的更改不能导致实参值的更改。而如果是地址传递,由于传递过程中从实参传递过来的是地址,所以被调函式中形参值的更改会直接导致实参值的更改。因此,我们可以考虑把多个返回值作为阵列元素定义成一个数组的形式,并使该阵列的地址作为函式的形式引数,以传址方式传递阵列引数。函式被呼叫后,形引数组元素改变导致实参改变,我们再从改变后的实引数组元素中获得函式的多个返回值。以下例项演示该方法的应用。
例项2:编写函式求一维整形阵列的最大值与最小值,并把最大值与最小值返回给主调函式。
方法:以指标方式传递该一维阵列的地址,然后把阵列的最大值与阵列的第一个元素交换,把阵列的最小值与最后一个元素交换。函式被呼叫完毕后,实引数组中的第一元素为阵列的最大值,实引数组中最后一个元素为阵列的最小值,从而实现返回阵列的最大值与最小值的功能。程式参考程式码如下:
#include "stdio.h"
#include "conio.h"
void max_min(int *ptr,int n) /*定义求阵列最大值最小值的函式,传递阵列指标*/
{int i,j,k;/*j储存最大值所在位置,k储存最小值所在位置*/
int *temp;/*用于交换位置*/
*temp=*ptr;
for(i=0;i{
if(*ptr
{
k=i;
*temp=*ptr;
*ptr=*(ptr+k);
*(ptr+k)=*temp ;
}
if(*(ptr+n-1)>*(ptr+i))/*最小值与最后一个元素进行交换*/
{
j=i;
*temp =*(ptr+n-1);
*(ptr+n-1)=*(ptr+j);
*(ptr+j)= *temp ;}
}
}
/*呼叫最大最小值函式*/
main()
{
int A[6],i;
for(i=0;i<6;i++)
scanf("%d",&A[i]);
max_min(A,6);
printf("max=%d, min=%d\n \n",A[0],A[5]);
getch();
}
除错结果如下:
请输入6个整形数,以空格隔开:
5 8 9 32 -6 4
max=32,min=-6
注意:该方法适用于多个返回值的资料型别一致的情况。当返回值资料型别不一致时,不适用该方法
分页:123