C语言函数返回值与参数传递

C语言函数返回值与参数传递

一:参数传递

C语言的函数中必不可少的就是参数传递,可以采用传值和传指针两种方式。
1.传值的形式:只是将参数值的拷贝传给函数,并非参数本体如:

int test(int x,int y)
{
    x=2*y;
    return x;
}
int main(void)
{ 
    int a=0,b=5;
    printf("%d,%d\n\r",test(a,b),a);
	return 0;
}

运行结果为:
10,0
即传值方式只可以将实参传递给函数,不可以改变实参本身。

2.传指针形式:直接传给函数的是变量的地址。
如:

int a(int b,int *c)
{
    int i=0;
    for(i=0;i<4;i++)
        c[i]=b*i;
    return 0;
    
}
int main(void)
{ 
    int b=2,c[4],i;
    a(b,c);
    for(i=0;i<4;i++)
	    printf("Data is -> %d\n\r",c[i]);
	return 0;
}

运行结果为:
Data is -> 0
Data is -> 2
Data is -> 4
Data is -> 6

由于被调函数在参数指针的作用域之内,此时可以直接改变变量的本体。

二:返回值

函数除了参数传递还有返回值,既可以返回变量值也可以返回地址。
1.返回变量
如:

int a(int b)
{
    int i=5;
    return 5*b;
}
int main(void)
{ 
    int b=2;
	printf("Data is -> %d\n\r",a(b));
	return 0;
}

运行结果

Data is -> 10

2.返回地址

int *test(int b)
{
    int i=0,buf[4];
    for(i=0;i<4;i++)
        buf[i]=b*i;
    return buf;
    
}
int main(void)
{ 
    int  b=2;
    int *p;
    int  i=0;
    p=test(b);
    for(i=0;i<4;i++)
    	printf("%d ,%d \n\r",p[i],test(b));
	return 0;
}

运行结果
0 ,1084896256
2 ,1084896256
4 ,1084896256
6 ,1084896256

另外不能返回局部变量地址。

int *buf()
{
	 int dad;
	 double buf[3][2];
	 dad=sizeof(buf);
  	 return &dad;//error:由于dad是局部变量,函数结束后释放。
}
  • 14
    点赞
  • 46
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
函数C语言中非常重要的概念,它允许我们将一系列操作封装起来,实现代码的重用和模块化。函数的参数和返回值函数中的关键部分,它们决定了函数的输入和输出。 首先,函数的参数是在定义函数时声明的,它可以是任何合法的C数据类型,包括整型、浮点型、字符型、指针型等。函数的参数允许我们将外部的数据传递函数内部进行处理,使得函数可以适应不同的输入数据,增加了函数的灵活性和通用性。 其次,函数返回值函数执行完毕后返回给调用者的结果,它也可以是任何C数据类型。通过返回值函数可以向调用者传递处理完毕的结果,从而实现函数与外部环境的数据交换。返回值还可以帮助我们进行错误处理和状态判断,例如返回-1表示函数执行失败,返回0表示函数执行成功等。 在教学中,我们可以通过实际案例来演示函数参数和返回值的使用。比如定义一个计算两个数之和的函数,可以将两个数作为参数传递函数,然后函数返回两数之和作为结果。这样的案例可以让学生清楚地理解函数参数和返回值的作用与用法。 另外,在教学中我们也可以通过练习来巩固学生对函数参数和返回值的理解和掌握。比如设计一些函数调用的题目,要求学生分析函数的参数和返回值,并正确进行函数调用和结果输出。通过这样的练习,学生可以更好地掌握函数参数和返回值的相关知识。 总之,函数参数和返回值C语言中非常重要的概念,它们决定了函数的输入和输出,对于理解和掌握函数的使用非常关键。在教学中,我们可以通过案例演示和练习巩固来帮助学生更好地理解和应用函数参数和返回值

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值