面试题答案
一键面试函数指针示例代码
#include <stdio.h>
// 定义一个普通函数
int add(int a, int b) {
return a + b;
}
int main() {
// 定义一个函数指针
int (*funcPtr)(int, int);
// 让函数指针指向add函数
funcPtr = add;
// 通过函数指针调用函数
int result = funcPtr(3, 5);
printf("通过函数指针调用add函数的结果: %d\n", result);
return 0;
}
在上述代码中:
- 首先定义了一个普通函数
add
,用于计算两个整数的和。 - 接着定义了一个函数指针
funcPtr
,它指向一个返回int
类型,并且接受两个int
类型参数的函数。 - 然后将
funcPtr
指向add
函数。 - 最后通过
funcPtr
调用add
函数,并输出结果。
指针函数示例代码
#include <stdio.h>
#include <stdlib.h>
// 定义一个指针函数,返回一个动态分配内存的int类型指针
int* createArray(int size) {
int *arr = (int *)malloc(size * sizeof(int));
if (arr == NULL) {
return NULL;
}
for (int i = 0; i < size; i++) {
arr[i] = i;
}
return arr;
}
int main() {
int size = 5;
// 调用指针函数
int *resultArray = createArray(size);
if (resultArray != NULL) {
printf("指针函数返回的数组内容: ");
for (int i = 0; i < size; i++) {
printf("%d ", resultArray[i]);
}
free(resultArray); // 释放动态分配的内存
} else {
printf("内存分配失败\n");
}
return 0;
}
在上述代码中:
- 定义了一个指针函数
createArray
,它接受一个整数参数size
,用于动态分配一个大小为size
的int
类型数组,并对数组元素进行初始化,最后返回这个数组的指针。 - 在
main
函数中调用createArray
函数,获取返回的数组指针,并输出数组的内容,最后释放动态分配的内存以避免内存泄漏。