C语言之函数返回值与参数传递案例教程

 更新时间:2021年07月22日 08:40:05   作者:LEE.ZHIMIN  
这篇文章主要介绍了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是局部变量,函数结束后释放。
}

到此这篇关于C语言之函数返回值与参数传递案例教程的文章就介绍到这了,更多相关C语言函数返回值与参数传递内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • 使用单链表实现多项式计算示例

    使用单链表实现多项式计算示例

    这篇文章主要介绍了使用单链表实现多项式计算示例,需要的朋友可以参考下
    2014-03-03
  • Qt编写提示进度条的实现示例

    Qt编写提示进度条的实现示例

    进度条在很地方都可以使用到,Qt自带的进度条或者操作系统的进度条样式,不够炫,本文就介绍一下Qt编写自定义控件的提示进度条的实现示例,感兴趣的可以了解一下
    2021-12-12
  • C语言学生成绩管理系统设计

    C语言学生成绩管理系统设计

    这篇文章主要为大家详细介绍了C语言学生成绩管理系统设计,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2018-01-01
  • C/C++获取当前时间的方法总结(最全)

    C/C++获取当前时间的方法总结(最全)

    这篇文章主要为大家整理了C/C++中获取当前时间的最全方法,文中的示例代码讲解详细,具有一定的学习和借鉴价值,需要的可以了解一下
    2023-03-03
  • 2022最新使用VSCode编译运行C++的过程及会遇到的两个问题

    2022最新使用VSCode编译运行C++的过程及会遇到的两个问题

    这篇文章主要介绍了2022最新使用VSCode编译运行C++的过程及会遇到的两个问题,这里需要注意把刚才解压的地址加上\bin添加进去,比如我的:D:\aaakkk\cpp\mingw64\bin,然后点确定,注意一定要确保它被保存了,感兴趣的朋友跟随小编一起看看吧
    2022-09-09
  • C语言实现静态存储通讯录的示例代码

    C语言实现静态存储通讯录的示例代码

    这篇文章主要为大家详细介绍了如何利用C语言实现一个静态存储的通讯录,文中的示例代码讲解详细,对我们学习C语言有一定帮助,需要的可以参考一下
    2022-09-09
  • C++浅析类与对象的基础

    C++浅析类与对象的基础

    类和对象是两种以计算机为载体的计算机语言的合称。对象是对客观事物的抽象,类是对对象的抽象。类是一种抽象的数据类型;变量就是可以变化的量,存储在内存中—个可以拥有在某个范围内的可变存储区域
    2022-05-05
  • C++ OpenCV实战之图像全景拼接

    C++ OpenCV实战之图像全景拼接

    本文主要介绍了如何使用OpenCV C++ 进行图像全景拼接,文中的示例代码讲解详细,对我们学习OpenCV有一定的帮助,感兴趣的可以了解一下
    2022-01-01
  • C语言实现考勤管理系统

    C语言实现考勤管理系统

    这篇文章主要为大家详细介绍了C语言实现考勤管理系统,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2022-02-02
  • C++中十种内部排序算法的比较分析

    C++中十种内部排序算法的比较分析

    本文给大家分享的是个人写的一段对C++中十种内部排序算法的比较分析的代码,主要在于测试10种排序方法的性能,给大家参考下吧。
    2015-03-03

最新评论