硬汉嵌入式论坛

 找回密码
 立即注册
查看: 483|回复: 4
收起左侧

[Lua] Lua应该是不支持类似C的指针方式做函数形参值传递给实参

[复制链接]

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
106726
QQ
发表于 2023-6-29 00:28:39 | 显示全部楼层 |阅读模式



C的函数形参是值传递方式,LUA的函数形参也是值传递。

但C的可以通过指针的方式传递。LUA没有找到类似的方式
回复

使用道具 举报

2

主题

72

回帖

78

积分

初级会员

积分
78
发表于 2023-6-29 15:04:33 | 显示全部楼层
楼主的意思是在lua里面传递数组或者列表吗?  这个是可以传递的,这个是我之前的一个程序:

这个是数据(列表)定义:
定义.png

这个是 被调用的函数(AlmBuf 是要引进来一个数组)
被调用的函数.png

这个是调用的语句
调用的语句.png
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
106726
QQ
 楼主| 发表于 2023-6-30 00:38:04 | 显示全部楼层
lanse闪电 发表于 2023-6-29 15:04
楼主的意思是在lua里面传递数组或者列表吗?  这个是可以传递的,这个是我之前的一个程序:

这个是数据 ...

谢谢分享。

是想实现这种功能。
local b = 1

function test(a)
  a = a+1
end

test(b)

print(b)

希望b输出是2
回复

使用道具 举报

2

主题

72

回帖

78

积分

初级会员

积分
78
发表于 2023-6-30 09:57:39 | 显示全部楼层
eric2013 发表于 2023-6-30 00:38
谢谢分享。

是想实现这种功能。

好像这种方式是没法取地址的,只能把 变量b 设成数组。

这样是可以的:


function test(a)
        a[1] = a[1] + 1
end


local b = {1}
test(b)

回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
106726
QQ
 楼主| 发表于 2023-7-1 01:10:24 | 显示全部楼层
lanse闪电 发表于 2023-6-30 09:57
好像这种方式是没法取地址的,只能把 变量b 设成数组。

这样是可以的:

这个方法不错

我现在是改成用全局变量实现了。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|小黑屋|Archiver|手机版|硬汉嵌入式论坛

GMT+8, 2024-5-1 22:51 , Processed in 0.167477 second(s), 28 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2023, Tencent Cloud.

快速回复 返回顶部 返回列表