指针
指针
LavaX没有专门的指针类型,但是LavaX有指针。
LavaX的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指针- 在LavaX语言里
(int *)
是从后面的地址里取一个int类型的数据- 此外,
(char *)
可以简写为*
,这点也是与C语言不同的
指针类型
LavaX有四种指针类型:
(char *)
(int *)
(long *)
(float *)
这些都是指向简单变量的指针。如果需要对数组或结构进行操作,可以使用LavaX的"引用"。