matlab 不同函数间传递结构体数据_Matlab的函数中如何实现按引用传递参数?

Matlab的函数中如何实现按引用传递参数?(原创)

-- by benbenknight

Matlab中函数的参数都是采用按值传递的方式,没有按引用传递的方式,这让C++程序员很不习惯,很多时候我们可能会需要“在函数内实际修改参数的值”,尤其在当传入参数是一个类或结构体时。

几经摸索,总算被俺发现了一种可以替代的方法,就是让函数的参数同时作为同名返回值(实际上不一定非得同名,同名是为了代码理解起来方便),这样便可实现“在函数内部修改参数,外部参数的实际值也会发生变化”的功能。

下面是一个小例子。

文件test.m的源代码如下:

function test

% 测试函数

disp('按值传递参数,调用函数后,应有p=1');

p=1;

parameter_by_value(p);

disp(p); %

p=1

disp('按引用传递参数,调用函数后,应有p=2');

p=parameter_by_reference(p);

disp(p); %

p=2

disp('按引用传递参数,调用函数后,应有p1=2,

p2=4, p3=6');

p1=1;

p2=2;

p3=3;

[p1,p2,p3]=multi_parameter_by_reference(p1,p2,p3);

disp([p1 p2 p3]);

%---- 以下为几个子函数 ----------------

function parameter_by_value(p)

% 按值传递参数

% 函数内部改动参数p,函数外p的值应该不变

p=2*p;

function p=parameter_by_reference(p)

% 模拟按引用传递参数

% 函数内部改动参数p,函数外p的值也会变。

p=2*p;

function [p1,p2,p3]=multi_parameter_by_reference(p1,p2,p3)

% 模拟按引用传递多个参数

p1=2*p1;

p2=2*p2;

p3=2*p3;

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值