在单片机开发中,有时候需要调用不同的函数执行,这时候用函数指针非常好,另外函数指针可以用于回调函数。
函数指针是指向函数的指针变量。函数指针可以用于调用函数、作为参数传递给其他函数以及作为返回值返回给其他函数。函数指针可以大大增强程序的灵活性和可重用性。
函数指针的用法主要包括以下几个方面:
函数指针的定义:函数指针的定义和普通指针变量的定义类似,只不过需要指定函数的返回值类型和参数列表。例如,以下代码定义了一个指向函数的指针变量:
int (*p)(int, int); // 指向返回值为int,带两个int类型参数的函数的指针变量p
函数指针的赋值:函数指针可以像普通指针一样进行赋值。例如,以下代码将函数add赋值给函数指针p:
int add(int a, int b) { return a + b; }
int (*p)(int, int) = add; // 将函数add赋值给函数指针p
函数指针的调用:函数指针可以像函数一样进行调用。例如,以下代码使用函数指针p调用函数add:
int result = (*p)(1, 2); // 调用函数add,并将返回值赋给result
函数指针作为参数传递:函数指针可以作为参数传递给其他函数,以实现函数回调的功能。例如,以下代码定义了一个函数calc,并将函数指针p作为参数传递给该函数:
int calc(int a, int b, int (*p)(int, int)) {
return (*p)(a, b);
}
int result = calc(1, 2, add); // 调用calc函数,并将add函数指针作为参数传递
函数指针作为返回值返回:函数指针也可以作为函数的返回值返回给其他函数。例如,以下代码定义了一个函数getFunc,返回一个指向函数的指针变量:
int (*getFunc())(int, int) {
return add;
}
int (*p)(int, int) = getFunc(); // 调用getFunc函数,并将返回值赋给函数指针p
函数指针是C语言中的一种重要特性,它可以大大增强程序的灵活性和可重用性,但也需要注意函数指针的使用方法和注意事项。
|