调用传递给另一个函数的函数指针

标签 c function-pointers

所以我似乎无法让这个简单的函数指针在没有段错误的情况下运行

这是我正在使用的:

测试.c:

 #include <stdint.h>
 #include <stdlib.h>
 #include <stdio.h>
 #include <string.h>
 #include <unistd.h>

 typedef void (*lwpfun)(void *);     
 static void indentnum(void * num);

 int main(int argc, char *argv[]){
    lwp_create((lwpfun)indentnum,(void*)42); 

    return 0;
 }

 static void indentnum(void *num) {
    printf("Indent num: %d\n", *(int *)num);
 }

lwp.c

 #include "stdio.h"
 #include <stdlib.h>

 void lwp_create( void (*lwpfun)(void *), void *arg){
    (*lwpfun)(arg); //Seg faulting
 }

最佳答案

您将 num 作为 (void*)42 传递,这是一个垃圾指针,然后对其进行转换和取消引用。要么传递 int 变量的地址,要么(可移植性较差)将其转换回 int

关于调用传递给另一个函数的函数指针,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33203030/

相关文章:

c - C语言中main方法中参数的目的是什么

c - dbx:警告:使用 srcline 信息进入函数

c - 分配适当的变量以使这些声明正确

c - 为什么 `p()` 和 `(*p)()` 都有效?

c - 编写基本的 C Shell - 理解 argv[]

c - 指向结构数组指针数组的二维数组

c++ - 有什么方法不需要在 Xcode 中使用文件的完整路径? [C/C++]

c++ - 无法理解代码/函数调用

c - 以指针为参数的数组函数

c++ - 如何阅读复杂的类型?