最近用到了一部分C/C++的相关知识,但是C/C++的函数只能返回一个变量值,如果要返回多个就很难做。经过多方面查找资料,发现如果想返回多个变量值一般只有两种方法:

  1. 设置指针和地址;
  2. 构造结构体;
  3. 设置全局变量;

设置全局变量是最简单的方法,但是在有些场合并不适用。尤其是多次调用这个函数时,这个方法是特别不实用的。因此比较实用的还是前两种方法。本文以第一种方法设置指针和地址为例介绍返回多个变量值。


一、举个例子

有一个函数,传进来一个数组arr和一个int整数,返回值是两个数组,第一个数组对原始数组每一个值+int整数,第二个数组对原始数组每一个值-int整数。

代码实现:

以C为例,进行代码实现:

#include<stdio.h>


/*函数*/
void function(int arr[5], int arr1[], int arr2[], int x) {
	for (int i = 0; i < 5; i++)
	{
		arr1[i] = arr[i] + x;
		arr2[i] = arr[i] - x;
	}
}

int main() {
	int arr[5] = { 1,2,3,4,5 };
	int arr1[5];
	int arr2[5];
	int x = 1;
	function(arr, arr1, arr2, x);
	printf("arr1=%d,%d,%d,%d,%d\n", arr1[0], arr1[1], arr1[2], arr1[3], arr1[4]);
	printf("arr2=%d,%d,%d,%d,%d\n", arr2[0], arr2[1], arr2[2], arr2[3], arr2[4]);

}

运行结果:
arr1=2,3,4,5,6
arr2=0,1,2,3,4

当然,也可以用到指针:
【由于数组名本质上是一个指针】

*代码实现2:

#include<stdio.h>


/*函数*/
void function(int* arr, int* arr1, int* arr2, int x) {
	for (int i = 0; i < 5; i++)
	{
		arr1[i] = arr[i] + x;
		arr2[i] = arr[i] - x;
	}
}

int main() {
	int arr[5] = { 1,2,3,4,5 };
	int arr1[5];
	int arr2[5];
	int x = 1;
	function(arr, arr1, arr2, x);
	printf("arr1=%d,%d,%d,%d,%d\n", arr1[0], arr1[1], arr1[2], arr1[3], arr1[4]);
	printf("arr2=%d,%d,%d,%d,%d\n", arr2[0], arr2[1], arr2[2], arr2[3], arr2[4]);

}

ok,以上便是全部内容了,关于指针,推荐一本书籍《C Primer Plus》,参考链接:https://book.douban.com/subject/26792521/

最后,说一下,由于我也是一个C语言方面的小白,水平有限,错误之处在所难免,欢迎大家批评指正。

Logo

旨在为数千万中国开发者提供一个无缝且高效的云端环境,以支持学习、使用和贡献开源项目。

更多推荐