Tag: 函数指针

什么是函数指针,我将如何使用它们?

我知道我可以使用指针来实现function。 有人可以解释为什么会使用它们,以及如何使用它们? 简短的示例代码对我很有帮助。

何时数组名称或函数名称“转换”为指针? (在C中)

1) 误解 : 每当使用C语言声明数组时,都会隐式创建指向数组第一个元素的指针(数组的名称)。 (是吗?我不这么认为!) 这个页面的前两行(虽然我不确定信息的正确性)说明相同。 正如我们所看到的,当我们声明一个数组时,为数组的单元分配一个连续的内存块,并且还分配一个指针单元(适当类型)并初始化为指向数组的第一个单元。 但是当我输出该指针中包含的地址和该指针的地址时 ,它们会变成相同的。 所以,我认为毕竟不会创建指针。 2)我从这个问题中选了这个 。 在大多数情况下,数组名称将转换为指针。 任何人都可以详细解释编译器何时决定将数组名转换为指针, 为什么 ? PS:请解释一下function 。 同样在这个链接中,给出了一个例子,说对于函数int square(int,int) ,任何square , &square , *square , **square指向相同的函数指针。 你可以解释吗? 编辑:代码段 int fruits[10]; printf(“Address IN constant pointer is %p\n”, fruits); printf(“Address OF constant pointer is %p\n”, &fruits); 输出: Address IN constant pointer is 0xbff99ca8 Address OF constant […]

typedef如何用于函数指针

我想我可能患有可怕的“偶然程序员”疾病,至少在涉及typedef和函数指针时。 所以我一直在试验各种涉及这些的组合,根据我得到的所有输出来分析结果。 但是,当我继续尝试不同的组合,而不是分析结果,我现在只是在过程中丢失。 我希望你们能帮助我搞清楚这个烂摊子。 第一个代码示例 typedef void (print)(void); void do_something (void) { printf(“Hello World\n”); } print *pr; pr = &do_something; pr(); // Hello World 第二个代码示例 typedef void (print)(void); void do_something (void) { printf(“Hello World\n”); } print *pr; pr = do_something; pr(); // Hello World 上面的代码示例如何工作,好像’&’对函数名称没有影响 第三个代码示例 typedef void (print)(void); void do_something (void) { printf(“Hello World\n”); […]