最近用到了一部分C/C++的相关知识,但是C/C++的函数只能返回一个变量值,如果要返回多个就很难做。经过多方面查找资料,发现如果想返回多个变量值一般只有两种方法:
- 设置指针和地址;
- 构造结构体;
- 设置全局变量;
设置全局变量是最简单的方法,但是在有些场合并不适用。尤其是多次调用这个函数时,这个方法是特别不实用的。因此比较实用的还是前两种方法。本文以第一种方法设置指针和地址为例介绍返回多个变量值。
一、举个例子
有一个函数,传进来一个数组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语言方面的小白,水平有限,错误之处在所难免,欢迎大家批评指正。