了解 GNU 科学图书馆文档
Understanding GNU Scientific Library documentation
我正在尝试使用 GNU 科学图书馆,但无法理解其文档。这是 gsl_rng_env_setup 页面上的示例程序:
#include <stdio.h>
#include <gsl/gsl_rng.h>
gsl_rng * r; /* global generator */
int
main (void)
{
const gsl_rng_type * T;
gsl_rng_env_setup();
T = gsl_rng_default;
r = gsl_rng_alloc (T);
printf ("generator type: %s\n", gsl_rng_name (r));
printf ("seed = %lu\n", gsl_rng_default_seed);
printf ("first value = %lu\n", gsl_rng_get (r));
gsl_rng_free (r);
return 0;
}
我的问题从第三行开始,gsl_rng * r。这显然不是乘法(尚未定义变量),因此它必须是指针表示法。但是从 C++ tutorial on pointers, I would expect something like gsl_rng = *r, which would take the value of r and store that as gsl_rng. My guess is that gsl_rng isn't a variable, but some GNU Scientific library command; however I don't understand the documentation page 来看它也是:这个命令显然不是 gsl_rng * gsl_rng_alloc (const gsl_rng_type * T) 的形式——即使 r = gsl_rng_alloc,这个命令没有括号。
再往下看我们有 const gsl_rng_type * T 这行,它具有相同的形式,但显然做了一些不同的事情,这无济于事。这一行似乎将 gsl_rng_type 定义为常量,并为其分配 *T 的值——但这缺少赋值运算符。然而 T 必须是一个变量,因为几行之后它被赋值为 gsl_rng_default ...
我的问题似乎非常基本,这很麻烦。谁能指出我正确的方向?
gsl_rng
是一种类型。语句 gsl_rng * r;
声明了一个名为 r
的全局变量,类型指针指向 gsl_rng
。
后来,有这一行r = gsl_rng_alloc (T);
,它为声明的变量分配了一些值。
这是基本的 C++,所以如果你想理解这样的代码,也许你应该从一些 good book 开始。
诀窍是要记住随机数生成器有不同的种类。每一个都是它自己的 class。 gsl_rng_alloc 方法将为您创建一个随机数生成器 object,但想知道要使用什么 class。您通过传递 class 告诉它使用什么 class。然后该方法使用 class 为您实例化一个对象。它 returns 给你一个指向它为你创建的对象的指针。
我正在尝试使用 GNU 科学图书馆,但无法理解其文档。这是 gsl_rng_env_setup 页面上的示例程序:
#include <stdio.h>
#include <gsl/gsl_rng.h>
gsl_rng * r; /* global generator */
int
main (void)
{
const gsl_rng_type * T;
gsl_rng_env_setup();
T = gsl_rng_default;
r = gsl_rng_alloc (T);
printf ("generator type: %s\n", gsl_rng_name (r));
printf ("seed = %lu\n", gsl_rng_default_seed);
printf ("first value = %lu\n", gsl_rng_get (r));
gsl_rng_free (r);
return 0;
}
我的问题从第三行开始,gsl_rng * r。这显然不是乘法(尚未定义变量),因此它必须是指针表示法。但是从 C++ tutorial on pointers, I would expect something like gsl_rng = *r, which would take the value of r and store that as gsl_rng. My guess is that gsl_rng isn't a variable, but some GNU Scientific library command; however I don't understand the documentation page 来看它也是:这个命令显然不是 gsl_rng * gsl_rng_alloc (const gsl_rng_type * T) 的形式——即使 r = gsl_rng_alloc,这个命令没有括号。
再往下看我们有 const gsl_rng_type * T 这行,它具有相同的形式,但显然做了一些不同的事情,这无济于事。这一行似乎将 gsl_rng_type 定义为常量,并为其分配 *T 的值——但这缺少赋值运算符。然而 T 必须是一个变量,因为几行之后它被赋值为 gsl_rng_default ...
我的问题似乎非常基本,这很麻烦。谁能指出我正确的方向?
gsl_rng
是一种类型。语句 gsl_rng * r;
声明了一个名为 r
的全局变量,类型指针指向 gsl_rng
。
后来,有这一行r = gsl_rng_alloc (T);
,它为声明的变量分配了一些值。
这是基本的 C++,所以如果你想理解这样的代码,也许你应该从一些 good book 开始。
诀窍是要记住随机数生成器有不同的种类。每一个都是它自己的 class。 gsl_rng_alloc 方法将为您创建一个随机数生成器 object,但想知道要使用什么 class。您通过传递 class 告诉它使用什么 class。然后该方法使用 class 为您实例化一个对象。它 returns 给你一个指向它为你创建的对象的指针。