cocos2d-lua 模块函数时,啥时候不能用冒号

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了cocos2d-lua 模块函数时,啥时候不能用冒号相关的知识,希望对你有一定的参考价值。

参考技术A 冒号本身是一个语法糖当一个table内的方法被以冒号调用的话表示把这个table作为第一个参数传进去写个demo<pre t="code" l="cpp">local t =
t.fun = function(tab,v)
print(tab,v)
end
t:fun(123)
t.fun(t,123)这2个是相同的
所以根据你的function判断是否需要传入table来判断是否需要用冒号

传参数给函数,啥时候需要取地址符?

编程时遇到有的函数如果传参数时不加取地址符&就会出问题
遇到那种要改变参数值的函数时有点困惑,好像有时候不加也可以,有时候必须加。
我知道的有个swap函数,不加&的话是不能改变参数值的。
但具体什么时候需要加,什么时候不需要加呢?什么样的参数要加?或者说什么时候改的是副本?求权威的解答

关键看函数原型。
如果函数的形式参数不是指针,那么调用时的实际参数就 不 用取地址。
例如:
函数原型 int add(int a, int b) return a+b;
调用: int a=1,b=2,c; c= add(a,b); 不需要取地址

如果函数的形式参数是指针,那么调用时的实际参数 要地址, 是否需要 取地址符号& 要看实际参数本身 是 变量 还是 指针。是 变量,要取地址,是 指针 不要 要取地址。
函数原型 void fun(int *a, int *b) ;
调用: int a=1,b=2; fun(&a,&b); // a,b 是简单变量,需要取地址。
调用: int *p1=&a, *p2=&b; fun(p1,p2); // p1,p2 本身是指针,不需要取地址。

(函数原型里)参数用指针,允许数值经参数传入函数,运算结果可以经参数带回调用处。
(函数原型里)参数不用指针,允许数值经参数传入函数,但运算结果 不能 经参数 带回 调用处。

刚开始学c/c++ 掌握这些就够了。
参考技术A 这个加不加不仅仅是看改不改变参数值的,还要考虑实参本身是什么,如数组、值、指针等,还要作什么,要结合
例:
int a[];
change(a);
change(&a[0]);都是传数组地址
他们代表着同一个意思,因此不能简单这样看
至于怎么才能正确理解,这得靠平时积累,看多了就知道他是怎么一回事
现在你只要知道一点,它是取地址就行了。

以上是关于cocos2d-lua 模块函数时,啥时候不能用冒号的主要内容,如果未能解决你的问题,请参考以下文章

传参数给函数,啥时候需要取地址符?

我应该啥时候构建一个 Substrate 运行时模块而不是一个 Substrate 智能合约?

linux驱动静态加载模块和动态加载模块的入口函数分别是啥?

FPGA测试的时候需要编写测试模块,即激励模块,在编写测试模块时啥时候需要产生输入激励信号?

Swig/python:啥时候需要 SWIG_init()?

在 c 语言中调用函数时,啥时候应该添加“&”,啥时候不应该添加?