C函数实现返回多个值的方法
C语言中,一个函数最多只能实现一个返回值。
- int func (int b)
- {
- int a=5;
- if (a>b)
- return a;
- else
- return b;
- return 0;
- }
通过在函数中使用返回语句,返回一个值给函数,同时终止函数的调用,返回主函数。
而在实际操作过程中,我们需要调用一个函数,实现得出几个不同结果的情况。
(1)函数返回一个数组,然后再解析数组中的每个数值的意思。
(2)指针作为参数,承载所要输出的值。
- #include<stdio.h>
- #define IN
- #define OUT
- int volume_func(IN int length,IN int width,IN int heigh,OUT int *area_pr)
- {
- *area_pr = 2 * (length*width + width*heigh + heigh*length) ;
- return (length*width*heigh);
- }
- int main(int argc,char *argv[])
- {
- int x=2,y=3,z=4 ;
- int area ;
- int volume = volume_func(x,y,z,&area);
- printf("volume:%d,area:%d\n",volume,area);
- return 0 ;
- }
在这里调用一次函数得到来个值,即area和volume。注意函数中形式。
意外收获:定义宏IN,OUT来说明每个参数是输入参数还是输出参数,形同硬件的应用。
在VC++有许多这种方法的应用:
- #include <stdlib.h>
- long strtol( const char *start, char **end, int base );
**end是指向指针的指针
功能:函数返回带符号的字符串start所表示的长整型数。参数base代表采用的进制方式。指针end 指向start所表示的整型数之后的部分。如果返回值无法用长整型表示,函数则返回LONG_MAX或LONG_MIN. 错误发生时,返回零。
- #include<stdio.h>
- #include<stdlib.h>
- int main()
- {
- char* p = NULL;
- long n3 = strtol("129gg", &p, 8); // n3 = 10
- printf("%d\n%s\n",n3,p);
- return 0;
- }
在这里将“129gg”中数字认为是八进制,则012,十进制输出为10,p指向“9gg”
http://blog.csdn.net/callinglove/article/details/7840841
C函数实现返回多个值的方法的更多相关文章
- java 一个函数EnumMap返回多个值
java 一个函数如何返回多个值 在开发过程中,经常会有这种情况,就是一个函数需要返回多个值,这是一个问题!! 网上这个问题的解决方法: 1.使用map返回值:这个方法问题是,你并不知道如何返回值 ...
- java 一个函数如何返回多个值
在开发过程中,经常会有这种情况,就是一个函数需要返回多个值,这是一个问题!! 网上这个问题的解决方法: 1.使用map返回值:这个方法问题是,你并不知道如何返回值的key是什么,只能通过doc或者通过 ...
- c,c++函数返回多个值的方法
最近遇到一个问题,需要通过一个函数返回多个值.无奈C,C++不能返回多个值.所以就想有什么方法可以解决. 网上方法比较杂乱,一般有两种替代做法: 1. 利用函数的副作用, 返回值在函数外定义, 在函数 ...
- 2017寒假零基础学习Python系列之函数之 返回多个值
Python也和C语言一样有自己的标准库,不过在Python中叫做模块(module),这个和C语言中的头文件以及Java中的包类似,其中math就是其中之一,math模块中提供了sin()和cos( ...
- C# 函数返回多个值的方法
有时候我们需要一个函数返回多个值,网上更多是用out实现,我个人很喜欢用tuple方法. tuple是一个元组,最多支持7个元素,再多需要嵌套等方法实现. 使用元组定义函数的方法如下: public ...
- Oracle中函数/过程返回多个值(结果集)
Oracle中函数/过程返回结果集的几种方式: 以函数return为例,存储过程只需改为out参数即可,在oracle 10g测试通过. (1) 返回游标: return的类型为:SYS_REFCUR ...
- Go语言示例-函数返回多个值
Go语言中函数可以返回多个值,这和其它编程语言有很大的不同.对于有其它语言编程经验的人来说,最大的障碍不是学习这个特性,而是很难想到去使用这个特性. 简单如交换两个数值的例子: package mai ...
- [日常] Go语言圣经-函数多返回值习题
Go语言圣经-函数多返回值1.在Go中,一个函数可以返回多个值2.许多标准库中的函数返回2个值,一个是期望得到的返回值,另一个是函数出错时的错误信息3.如果一个函数将所有的返回值都显示的变量名,那么该 ...
- python学习笔记(九)函数返回多个值,列表生成式,循环多个变量,入参格式声明
一.函数返回多个值 1.函数如果返回多个值的话,它会把这几个值放到一个元组里面2.函数如果返回多个值的话,也可以用多个变量来接收 def say(): num1 = num2 = num3 = ret ...
随机推荐
- 【NOIP2012提高组】国王游戏 贪心 + 高精度
题目分析 题目答案不具有单调性,所以不可以二分,转而思考贪心.因为无法确定位置,所以考虑如何才能让对于每一个$1 ~ i$使得$i$的答案最大,即$1 ~ i$最后一个最优.若设对于位置$i$,$a[ ...
- hbase 2.0.2 增删改查
package cn.hbase.demo; import java.io.IOException; import java.util.Iterator; import org.apache.hado ...
- Adaptive partitioning scheduler for multiprocessing system
A symmetric multiprocessing system includes multiple processing units and corresponding instances of ...
- NYOJ 1076 计划数(公式 要么 递归)
方案数量 时间限制:1000 ms | 内存限制:65535 KB 难度:2 描写叙述 给出一个N*M的棋盘.左下角坐标是(0.0).右上角坐标是(N,M),规定每次仅仅能向上或者向右走.问从左下 ...
- Android之消息推送实现
在开发Android和iPhone应用程序时,我们往往需要从服务器不定的向手机客户端即时推送各种通知消息,iPhone上已经有了比较简单的和完美的推送通知解决方案,可是Android平台上实现起来却相 ...
- Real-time storage area network
A cluster of computing systems is provided with guaranteed real-time access to data storage in a sto ...
- Qt5.9 官方发布的新版本亮点的确不胜枚举(而且修复2000+ bugs)
作者:Summer Fang链接:https://www.zhihu.com/question/60486611/answer/177584284来源:知乎著作权归作者所有.商业转载请联系作者获得授权 ...
- WPF的页面导航
工作中之前接触过的WPF程序一直是使用TabControl作不同页面间的切换,每个Tab负责独立的功能,清晰简捷,所以一直就没有动力研究WPF自带的页面导航.(虽然接触过使用页面导航的WPF项目,也并 ...
- Windows 10 应用创建模糊背景窗口的三种方法
原文 Windows 10 应用创建模糊背景窗口的三种方法 现代的操作系统中创建一张图片的高斯模糊效果非常容易,不过如果要在窗口中获得模糊支持就需要操作系统的原生支持了.iOS/Mac 和 Windo ...
- 两个QWidget叠加,可部分代替layout的功能
在QT开发过程中,有时候会遇到这样的问题,当我们自己创建了一个Layout对象以后,使用QWidget的setLayout方法,将这个Layout对象应用到窗口中的时候,发现窗口上没有我们添加的控件, ...