易码技术论坛

 找回密码
 加入易码
搜索
查看: 282506|回复: 3

[教程] Lavo的指针

[复制链接]
发表于 2006-7-19 13:51:00 | 显示全部楼层
觉得把(类型 *)叫做指针..会造成理解上的偏差..称为取值符号更贴切..

参看我以前写的文章
Lava中的惟一的指针类型addr..相当于C/C++中的void *指针类型
Lava中取值符号有3大类..
第一类是取8位的大小的的值..如(char*)或*
第二类是取16位大小的值..如(int*)
第三类是取32位大小的值..如(long*)或(float*)

C/C++中只有惟一个取值符号...那就是*
依靠指针类型来判断到底应该取几位...
C/C++中指针类型有N种..比如int*,long*,char*...除了内置的指针类型..还可以为结构体定义指针类型..

 楼主| 发表于 2006-7-20 03:43:00 | 显示全部楼层
看清楚哦:

Lavo没有专门的指针类型,但是Lavo有指针。
[em05]
发表于 2006-8-30 13:52:25 | 显示全部楼层
等于是把内存地址转为数字在存为long型b,而b就是一个指针
不等于没有指针阿,只是做了一个转换,阿是?
 楼主| 发表于 2006-7-19 13:09:59 | 显示全部楼层 |阅读模式
  Lavo没有专门的指针类型,但是Lavo有指针。
  Lavo的long类型可以容纳下一个内存地址,所以当一个long变量的内容是一个内存地址时,这个变量就是事实上的指针。
  例如:
  int a;
  long b;
  b=&a;
  这时b就是一个指向变量a的指针。
  为了使指针更容易一目了然,增加了一个新数据类型:addr。实际上addr是long的别名,二者的性质是完全相同的。只是,我们用addr的好处是,可以一眼看出某个变量是指针。
  上例写成这样看起来就清晰多了:
  int a;
  addr b;
  b=&a;
  如何取指针指向的内容呢?具体到上例:
  (int *)b就是b指向的int型变量的值。
  注意这里和C语言的区别:
  在C语言里(int *)是把后面的指针强制转换为int指针。
  在Lavo语言里(int *)是从后面的地址里取一个int类型的数据。
  此外,(char *)可以简写为*,这点也是与C语言不同的。
  Lavo有(char *),(int *),(long *),(float *)四种指针,都是指向简单变量的指针,如果需要对数组或结构进行操作,可以使用Lavo的“引用”。
您需要登录后才可以回帖 登录 | 加入易码

本版积分规则

Archiver|手机版|小黑屋|EMAX Studio

GMT+8, 2024-4-28 02:19 , Processed in 0.015038 second(s), 19 queries .

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

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