lua指针学习

按照书上的例子,运行了下,lua指针关键就是3个值,指针函数,不变量,控制变量

function iter(a,i) --指针函数
   i=i+1
   local v=a[i]
   if v then
       return i,v
   end
end

function isp(a)    --返回指针函数,不变量,控制变量
   return iter,a,0
end

for k,v in isp({1,2,4}) do --控制变量是k,也就是指针函数返回的第1个赋值的变量
   print(k,v)
end

print("直接用指针函数调用")
i=0
for k,v in iter,{1,2,4},i do
   print(k,v,i)
end

local function getnext (list, node)--参数为不变量,控制变量
   if not node then
       return list
   else
       return node.next
   end
end
function traverse (list)
   return getnext, list, nil
end

list3 = {val = ‘hello2‘, next = nil}
list2 = {val = ‘hello3‘, next = list3}
list = {val = ‘hello‘, next = list2}

for node in traverse(list) do
   print(node.val)
end

运行结果

---------- lua ----------
1    1
2    2
3    4
直接用指针函数调用
1    1    0
2    2    0
3    4    0
hello
hello3
hello2

Output completed (3 sec consumed) - Normal Termination

lua指针学习,布布扣,bubuko.com

时间: 2024-08-26 17:12:31

lua指针学习的相关文章

lua 语句学习

版本:1.0 日期:2014.5.17 2014.6.1 版权:© 2014 kince 转载注明出处 在介绍SwitchButton之前,先来看一下系统Button是如何实现的.源码如下: @RemoteView public class Button extends TextView { public Button(Context context) { this(context, null); } public Button(Context context, AttributeSet att

lua指针

问题:Write an iterator fromto such that the next two loops becomeequivalent:for i in fromto(n, m)    <body>end for i = n, m    <body>end Can you implement it as a stateless iterator? 解答: function iter(m,i)    i = i + 1    if(i <= m) then    

c 函数及指针学习 10

标准库函数 1算数运算stdlib.h 2随机数stdlib.h 3字符串转化stdlib.h 4数学函数 math.h 5日期和时间 time.h 6信号 signal.h 7打印可变参数列表stdarg.h 8断言 assert.h 抽象数据类型在数据结构中比较仔细 运行时环境没看 来自为知笔记(Wiz)c 函数及指针学习 10,码迷,mamicode.com

2017年 1月 15日 指针 学习整理

有关指针的概念: 指针是一个特殊的变量,它里面存储的数值被解释为内存里的一个地址. FIrst of all:我们需要明确目标 关于指针的学习以及使用我们需要搞清楚有关指针的四个内容:指针的类型,指针所指向的类型,指针的值(或者说叫指针所指向的内存区),还有指针本身所占用的内存区(指针也是一个特殊的变量吗,它肯定也是占据内存的).接下来让我们分别进行学习. 我们先来申明几个指针的例子: 1 int *ptr; 2 char *ptr; 3 int **ptr; 4 int (*ptr)[3];

c 函数及指针学习 6

不完整声明 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 /* 方法一   */ struct tag_a{     struct tag_b *bp;  /* 这里struct tag_b 还没有定义,但编译器可以接受 */     int value; }; struct tag_b{     struct tag_a *ap;     int value; }; typedef struct tag

c 函数及指针学习 5

聚合数据类型 能够同时存储超过一个的单独数据. c语言提供了数组和结构体. 1. 1 2 3 4 5 6 7 8 9 10 11 12 13 14 #include <stdio.h> #include <math.h> void main() { struct {     int a;     }x,*b; int c[2]={1,2}; x.a=1; b=c; printf("%d \n",b[1]); printf("%d \n",x.

C函数及指针学习3

1 2 3 4 5 6 7 8 9 10 11 12 13 #include <stdio.h> void main() { char *sa="sdhshdh"; char *sb="cdehhhhsdssssd"; printf("%d , %d \n",strlen(sa),strlen(sb));    if(strlen(sa)-strlen(sb)>=0) {     printf("run 1\n&quo

C和指针 学习笔记-4.函数

参数传递: 参数传递采用按值传递 ADT&黑盒 ADT:abstract data type,抽象数据类型 c可以用于设计与实现抽象数据类型,因为它可以限制函数和数据定义的作用域,这种技巧也称为黑盒设计 user.h #define MAXLEN 3 struct UserClz { char *name; char *phone; char *address; }; typedef struct UserClz User; /* *接函数 *通地名称查找地址 */ char const * l

C和指针 学习笔记-3.数组与指针

数据名代表首地址 指向数组的指针 #include <stdio.h> extern void iterate(int *p); void main(){ int a[]={1,2,3,4,5}; iterate(a); } void iterate(int *p){ int i; for(i=0;i<5;i++){ printf("%d",*p++); } } 指向一维数组的指针 int (*p)[3] #include <stdio.h> void i