c - 如何在 Prolog 中用指针实现 C 代码?

标签 c prolog swi-prolog

我是 prolog 的新手。我了解到,虽然它是一种声明性语言,但 prolog 可以用作通用编程语言,就像 C 一样。因此,无论您可以在 C 中解决什么问题,您也可以在 prolog 中解决,即使它运行 -时间可能不会那么好。由于序言中没有指针(据我所知),我想知道我是否可以在序言中为以下用 C 编写的代码编写等效程序:-

#include <stdio.h>

int main()
{
    int a = 5;
    int *p;
    p = &a;
    printf("The address of a is %d.", p);
    return 0;
}

最佳答案

使用一个流行的类比,您正在尝试使用 Screwdriver 钉入钉子。 Prolog 不是 C,在 Prolog 中解决问题与在 C 中解决问题有着根本的不同。

打印变量的值很容易,例如:

main :-
    X = 5,
    io:format("X = ~w~n", [X]).

但是您不能像在 C 中那样获取 X 的地址。您为什么要这样做?下次地址可能会不同,因为 Prolog 具有自动垃圾收集功能。

如果你想学习 Prolog,请忘记尝试编写看起来像 C 程序的 Prolog 程序,而是尝试解决实际问题。例如,您可以尝试 Project Euler 系列问题。

关于c - 如何在 Prolog 中用指针实现 C 代码?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18533011/

相关文章:

c - Linux 中的线程同步?

ios - 当字节通过不同的平台时,如何使字节按正确的顺序排列?

c - 在 c 中任意时间到达 "sleep"的最有效方法是什么?

string - 如何知道原子是否以某种模式开始?

prolog - 使用swi-prolog将prolog代码+C代码编译成二进制

prolog - 使用 Prolog 库 Simplex 求解线性方程组

c: 链表:如何编写节点交换函数?

prolog - 使用 Prolog CLPFD 实现 32 位数字的 XOR 功能

c++ - 在构造函数中初始化对矩阵

prolog - 这些在序言中是什么意思?