我是新手,所以如果我是密集的话,我道歉.我无法理解如何使用typedef
.假设我有以下命令:
typedef struct {
char pseudo[MAX_SIZE] ;
int nb_mar ;
} player ;
Run Code Online (Sandbox Code Playgroud)
这会创建一个名称player
,其中包含一串字符,并且int
正确吗?
现在,如果我们有这行代码:
struct set_of_players {
player T[NB_MAX_JOUEURS] ;
int nb ;
};
Run Code Online (Sandbox Code Playgroud)
我不明白这是做什么的?我会假设它创建一个struct类型的变量set_of_players
,但它叫什么?通常当我看到这种命令时,在关闭的amplesand表示变量名称后面有一个单词,但是这里没有任何内容; 我不明白.如果我没有做过这会甚至工作typedef struct
的set_of_players
?
最后,我有这行代码,我不明白:
typedef struct set_of_players players;
Run Code Online (Sandbox Code Playgroud)
老实说,我不知道这甚至意味着什么.我假设这是typedef
我需要使前一个命令有意义,但我甚至不知道它做了什么.
再一次,如果我以错误的方式看待这个,并且格式不佳,我很抱歉.非常感谢任何帮助,谢谢.
这是我的代码:
int h, w, c;
unsigned char* img = stbi_load("bricks.jpg", &w, &h, &c, 0);
if (img == NULL) {
printf("Error in loading the image\n");
}
printf("Image loaded with width of %d, height of %d, and %d channels", w, h, c);
GLuint txtr = 0;
glEnable(GL_TEXTURE_2D);
glGenTextures(1, &txtr);
glBindTexture(GL_TEXTURE_2D, txtr);
glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA, w, h, 0, GL_RGBA, GL_UNSIGNED_BYTE, img);
Run Code Online (Sandbox Code Playgroud)
由于某种原因,当我取消评论时,我的窗口不再打开glTexImage2D
。w
和h
都是由 计算的stbi_load
,它是库的一部分stb_image.h
。我的错误在哪里?
如果我已经定义并打开了一个我决定调用的文件f
,那么简单地说f = NULL
而不是正确关闭文件会带来fclose()
什么后果?
或者f = NULL
甚至没有工作?
我有一个OCaml函数,我从帖子中获得:在Ocaml中列出逆转
let rev_list l =
let rec rev_acc acc = function
| [] -> acc
| hd::tl -> rev_acc (hd::acc) tl
in
rev_acc [] l
Run Code Online (Sandbox Code Playgroud)
我测试了这个,它显然有效,但我不明白为什么.在main函数中,在定义时rev_acc
,它表示它只接受参数acc
.但是,然后用两个参数调用该函数.为什么我们允许这样做?
另外,为什么我们说let rec rev_acc acc = function
,"=函数"是什么意思,为什么我们不使用匹配?我假设这与不必指定某些参数有关; 我确实在课程的最后部分记住了一些内容,这只是简单介绍的内容.它与currying有什么关系吗?
对不起,如果这些都是愚蠢的问题; 如果不是很明显的话,我对函数式编程比较陌生.
任何帮助是极大的赞赏.谢谢.