跳至主要內容

指针


指针

LavaX没有专门的指针类型,但是LavaX有指针。

LavaX的long类型可以容纳下一个内存地址,所以当一个long变量的内容是一个内存地址时,这个变量就是事实上的指针。

例如:

int a;
long b;
b = &a;  // 这时b就是一个指向变量a的指针

为了使指针更容易一目了然,增加了一个新数据类型:addr。实际上addrlong的别名,二者的性质是完全相同的。只是,我们用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的"引用"。