我明白怎么(let ((x v1) (y v2)) e)可以改写成((lambda (x y) e) v1 v2).但我不太熟悉let*.
我们如何(let* ((x v1) (y v2) (z v3)) e)在lambda和函数应用程序方面重写?
程序:
int x;
int *y;
int **z;
z = (int **) malloc (sizeof(int *));
y = (int *) malloc (sizeof(int));
x = 1;
*z = &x;
*y = x;
.
.
.
Run Code Online (Sandbox Code Playgroud)
问题:有什么区别:
*z = &x;
*y = x;
Run Code Online (Sandbox Code Playgroud)
从我的理解*z指向x和*y的地址指向x,但是*y指向x不需要x的地址?我真的不明白这两个变量是怎么回事.
编辑:我也想知道何时知道何时在堆栈上或堆上分配变量?
最后,改变*z,改变**z?