c,c++函数返回多个值的方法
最近遇到一个问题,需要通过一个函数返回多个值。无奈C,C++不能返回多个值。所以就想有什么方法可以解决。
网上方法比较杂乱,一般有两种替代做法:
1. 利用函数的副作用, 返回值在函数外定义, 在函数内修改, 一般为void函数。
例1.1输入x,y求修改后的x,y
#include<iostream>
using namespace std;
void swap(int *p,int *q)
{
int temp;
temp=*p;
*p=*q;
*q=temp;
}
int main()
{
int a,b;
cin>>a>>b;
cout<<"the num is :"<<a<<b<<endl;
swap(a,b);//swap(&a,&b);
cout<<"the sorted num is :"<<a<<b<<endl;
}
例1.2输入a,b,c求x,y,z
略
例1.3输入x[]求修改后的x[]
#include<stdio.h>
#include<stdlib.h>
void *bbb(int *p1)
{
int i=;
while(i<)
{
*p1+=;
*p1++;
i++;
}
}
void main()
{
int a[]={,,,};
bbb(a);
int i=;
while(i<)
{
printf("%d\t",a[i]);
i++;
}
}
例1.4输入x[]求y[]
略
2. 把返回值打包返回,如返回一个数组名,指针,结构体.
例2.1返回一个数组名
#include<stdio.h>
#include<stdlib.h>
int *aaa(int a[])
{
int i=;
while(i<)
{
a[i]+=;
i++;
}
return a;
}
void main()
{
int *p;
int a[]={,,,};
p=aaa(a);
int i=;
while(i<)
{
printf("%d\t",a[i]);
i++;
}
}
例2.2返回一个指针
#include<stdio.h>
#include<stdlib.h>
int aaa(int *p)
{
int i=;
while(i<)
{
*p+++=;
i++;
}
return p;
}
void main()
{
int *px;
int a[]={,,,}; px=aaa(a);
int i=;
while(i<)
{
printf("%d\t",a[i]);
i++;
}
}
例2.3返回一个结构体
略
(被“略”的地方如果谁有兴趣可以自己去试着写一个)
带返回值的函数需要用一个指针接受,而接收的也是之前主函数里定义的变量的地址。即只要函数被调用了,变量的值就改变了,根本不需要在定义一个指针变量来接收,从这可以得出,有返回值的函数都可以改成void()型函数。(即例2.2可以简写成例1.3)
综上
可以看出,无论你怎么返回,无论你返回不返回,几乎都需要用到指针。可能有人会说用纯数组也可也实现,LZ以前也用数组,但现在觉得以前很愚蠢,原因会用指针的人都知道吧。其实上面的众多方法说白了也就一句话:
利用指针。
指针很强大,LZ以前贪玩,没怎么学,最近学C,又捡起来看了一下,一定要把这个学会。用好。
c,c++函数返回多个值的方法的更多相关文章
- C# 函数返回多个值的方法
有时候我们需要一个函数返回多个值,网上更多是用out实现,我个人很喜欢用tuple方法. tuple是一个元组,最多支持7个元素,再多需要嵌套等方法实现. 使用元组定义函数的方法如下: public ...
- C++引用形参,函数返回多个值
之前编代码有遇到过想让一个函数返回多个值的情况,low low的我不知道有什么办法,直接使用的全局变量将函数里的值传出去. 今天看书,<C++primer>第五版中文版第189页:使用引用 ...
- PHP自定义函数返回多个值
PHP自定义函数只允许用return语句返回一个值,当return执行以后,整个函数的运行就会终止. 有时要求函数返回多个值时,用return是不可以把值一个接一个地输出的. return语句可以返回 ...
- python学习笔记(九)函数返回多个值,列表生成式,循环多个变量,入参格式声明
一.函数返回多个值 1.函数如果返回多个值的话,它会把这几个值放到一个元组里面2.函数如果返回多个值的话,也可以用多个变量来接收 def say(): num1 = num2 = num3 = ret ...
- Android JNI编程(三)——C语言指针的初步认识、指针变量、互换两个数、函数返回多个值
版权声明:本文出自阿钟的博客,转载请注明出处:http://blog.csdn.net/a_zhon/. 目录(?)[+] 一.什么是指针? 简单来说: 指针就是内存地址 内存地址就是指针. ...
- C++ 利用指针和数组以及指针和结构体实现一个函数返回多个值
C++ 利用指针和数组实现一个函数返回多个值demo1 #include <iostream> using namespace std; int* test(int,int,int); i ...
- C语言中函数返回字符串的4中方法
C语言中函数返回字符串的4中方法 函数的构成部分:返回类型.函数名称.参数.函数主体 参数:函数调用时传入的参数称为实参,函数定义时出现的参数为形参 形参的作用在于接收实参传入的值,形参和函数内部的其 ...
- 函数返回多个值(c/c++)
当我们在处理一个数组的时候常常会碰到这样的问题:输入一个数组,和数组的一个元素,返回该元素所在行数和列数.这样就需要返回多组两个值,且组数不定.上述类型的函数在c语言程序里面存在两个问题.第一,函数只 ...
- Go语言示例-函数返回多个值
Go语言中函数可以返回多个值,这和其它编程语言有很大的不同.对于有其它语言编程经验的人来说,最大的障碍不是学习这个特性,而是很难想到去使用这个特性. 简单如交换两个数值的例子: package mai ...
随机推荐
- OC对象中的getter方法中不能用self.
@interface boy:NSObject { int _age; } - (void)setAge:(int)age; - (int)age; @end @implementation boy ...
- Android开发-API指南-<service>
<service> 英文原文:http://developer.android.com/guide/topics/manifest/service-element.html 采集(更新)日 ...
- 在 MVC 控制器中使用 构造函数时行依赖注入 (IoC)
在 Controller 中使用 构造函数进行依赖注入 (IoC) 1. Controller 代码: ICard card; ICardCategory cardCategory; public C ...
- JS实现电子时钟
目前有个小项目,在首页头部导航栏里需要一个电子时钟的效果,于是我就采用如下代码实现了一个电子时钟的效果.不过不完美,第一种方式容易导致网页莫名其妙的异常,后来觉得可能是做的操作太多了,然后 ...
- DedeCMS中function='Html2Text(@me)的用法分析
本文实例讲述了DedeCMS中function='Html2Text(@me)的用法.分享给大家供大家参考.具体分析如下: 在使用dedecms建站网站时候,需要用到过滤html代码,调出纯文本的代码 ...
- iOS之UIAlertView的使用
UIAlertView: 1.普通使用: //普通的alert UIAlertView *av = [[UIAlertView alloc]initWithTitle:@"title&quo ...
- std::cout彩色输出
Mac OS效果 Windows 效果 想写这个东西其实是因为最近要写个命令行的工具,但是有个问题是什么呢?就是传统的那个黑漆漆的窗口看起来很蛋疼.并且完全看不到重点,于是就想起 来这么一个东西.相对 ...
- hadoop 根据SecondaryNameNode恢复Namenode
1.修改conf/core-site.xml 增加 <property> <name>fs.checkpoint.period</name> <value&g ...
- 1028 C语言文法
<程序> -> <外部声明> | <程序> <外部声明> <外部声明> -> <函数定义> | &l ...
- 嵌入式linux移植LAMP服务器
一.工具准备工作 要想在ARM平台上移植一套Apache+Msql+PHP的Web型服务器. 所用物理机系统: Ubuntu 14.04 LTS(64位) 交叉编译环境: arm-linux-g ...