这些声明在C中有多普遍?

这是我作业中的问题之一。我被要求描述以下声明所指定的x类型:

def choose_action(self,state):
        state = state[np.newaxis,:]
        mu = self.actor.predict(state) # returns list of list
        noise = self.noise()
        mu_prime = mu + noise
        print("Noise: ",noise,"mu: ",mu,"mu_prime: ",mu_prime[0])

        return mu_prime[0]

我了解A),可以分辨出B)是什么,但是C)和D)看起来对我来说太神秘了。

这种声明在C语言中常见吗?

brewbrew 回答:这些声明在C中有多普遍?

声明(a)(函数指针数组,可能用作某种调度表)并非闻所未闻。其他名称不是很常见,如果出现类似的名称,则可能会使用typedef名称。

很久以前,我写了一些代码,其中有一些定义为typedef名称的字符数组,这些字符数组传入函数并从中返回:

typedef char fixed_string[256];

fixed_string *fun(fixed_string *);

如果我们不将typedef用于函数声明,则它看起来像:

char (*fun(char (*)[256]))[256];

以这种方式使用数组是不可取的。非typedef版本很难读取,而typedefs是泄漏抽象,因为数组仍会转换为指针。我今天不会写。

传递的固定数组最好包装成struct

struct fixed_string { char s[256]; };

我们可以通过值或使用指针传递并返回该值。

(d)情况:

void (*x(int,void (*y) (int))) (int);

可以用typedefs重写,如下所示:

typedef void (*action)(int);

action x(int,action);

这暗示了某些状态机中可能发生的模式。也许x调用该action,并将其传递给int参数,然后返回指向另一个函数的指针,该函数用作下一个action

本文链接:https://www.f2er.com/3155308.html

大家都在问