闲杂篇(一)vs2017 c语言、c++从一个函数返回多个参数给主函数|c++函数之间结构体如何传递参数

本文介绍在VS2017环境下,通过两种方式实现函数间多参数的返回及结构体的传递。第一种方法利用指针和结构体返回多个整型值;第二种方法则通过结构体成员变量返回浮点型数组。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

函数返回多个参数给主函数|

函数之间结构体如何传递参数

笔者,最近因为学校项目需要,又捡起了vs2017来写算法
后面会更新矩阵使用方法,和自己写的一些矩阵功能,有兴趣的关注一波~
不多BB,直接上代码(共两种方法)

main.cpp

#include <iostream>
using namespace std;
#include "jiegouti.h"

int main() {
	cout << "*********************************************************************" << endl;
	cout << "vs2017 从一个函数返回多个参数给主函数|函数之间结构体如何传递参数" << endl;
	cout << endl << endl;
	/*第一种方法*/
	listptr a = NULL;
	a = (listptr)malloc(sizeof(list));
	*a = (re)malloc(sizeof(Result));
	a= first(1, 2);
	printf("第一种方法:------------------------------\n");
	cout << *((*a)->s_arr) << endl;
	printf("position:%d \ns_arr:%d,%d,%d", (*a)->position,(*a)->s_arr[0], (*a)->s_arr[1], (*a)->s_arr[2]);


	cout << endl << endl;
	/*第二种方法*/
	PARAMSAVE   set;
	set = second(1, 2);
	printf("\n第二种方法:------------------------------\n");
	printf("position:-------------------------\n");
	for (int i = 0; i < 3; i++)
	{
		for (int j = 0; j < 10; j++)

			printf("%f ", set.position[i][j]);
		cout << endl;
	}
		
	printf("s_arr:-------------------------\n");
	for (int i = 0; i < 10; i++)
		printf("%f :", set.s_arr[i]);
	system("pause");

}

第二个文件

jiegouti.h

#pragma once
#ifndef JIEGOUTI_H
#define JIEGOUTI_H

/*第一种方法*/
typedef struct
{
	int position[2][3];;
	int s_arr[3];
}Result,*re;
typedef re list, *listptr;
extern listptr first(int x, int y);


/*第二种方法*/
typedef struct ParamSave {
	double position[3][10 + 1];
	double s_arr[10];
}PARAMSAVE;
extern PARAMSAVE second(int startPoint, int middlePoint);

#endif JIEGOUTI_H 

头文件

jiegouti.cpp

#include <iostream>
using namespace std;
#include "jiegouti.h"
/*第一种方法*/
listptr first(int x, int y) {
	listptr ret = NULL;
	ret = (listptr)malloc(sizeof(list));
	*ret = (re)malloc(sizeof(Result));

	for (int i = 0; i < 2; i++)
	{
		for (int j = 0; j < 3; j++)
		{
			(*ret)->position[i][j] = x + y;
		}
	}
	(*ret)->position[0][0] = x+y;
	(*ret)->s_arr[0] = 1;
	(*ret)->s_arr[1] = 1;
	(*ret)->s_arr[2] = 1;
	return ret;

}
/*第二种方法*/
PARAMSAVE   haha;
PARAMSAVE second(int x, int y) {

	for (int i = 0; i < 3; i++)
		for (int j = 0; j < 10; j++)

			haha.position[i][j] = x + y;
	for (int i = 0; i < 10; i++)
		haha.s_arr[i] = 1;
	return haha;
}




资源领取:

1.在公众号后台领取,里面有我分享的学习资源,文件命名:vs2017结构体传参
2.或者去找我上传到压缩包《vs2017 c语言、c++从一个函数返回多个参数给主函数|c++函数之间结构体如何传递参数》

后续更新ST语言文件读取cvs

codesys工程ST语言学习笔记(二)写文件操作与添加库方法
codesys工程ST语言学习笔记(三)读文件操作txt,访问hello world 文件

【关注微信公众号一起来交流】
!
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

sf9090

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值