小编Sol*_*ves的帖子

如何用`lambda`重写`let*`?

我明白怎么(let ((x v1) (y v2)) e)可以改写成((lambda (x y) e) v1 v2).但我不太熟悉let*.

我们如何(let* ((x v1) (y v2) (z v3)) e)在lambda和函数应用程序方面重写?

lambda scheme

8
推荐指数
1
解决办法
2129
查看次数

方案:何时使用let,让*和letrec?

let,let*和letrec有什么区别?

请给出详尽的解释和例子.

scheme let

6
推荐指数
1
解决办法
1万
查看次数

C中的指针和内存分配

程序:

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的地址?我真的不明白这两个变量是怎么回事.

编辑:我也想知道何时知道何时在堆栈上或堆上分配变量?

  • 为什么在堆栈上分配x,y和z?
  • 为什么*y,**y,*z,**z在堆上分配?

最后,改变*z,改变**z?

c pointers memory-management

5
推荐指数
1
解决办法
165
查看次数

标签 统计

scheme ×2

c ×1

lambda ×1

let ×1

memory-management ×1

pointers ×1