0
点赞
收藏
分享

微信扫一扫

《0基础》学习Python——第二十一讲__网络爬虫/<4>爬取网页数据

_铁马冰河_ 2024-07-24 阅读 25

您的理解是正确的。pFunCallBack 是一种函数指针类型,它定义了函数的签名(即函数的参数类型和返回类型)。当我们说 pFunCallBack pFun,我们是在声明一个变量 pFun,其类型是 pFunCallBack —— 即一个函数指针,该指针可以存储指向任何具有相同签名的函数的地址。

transFrom 函数中,pFun 作为参数接收这样的一个函数地址。当我们将 show 函数作为参数传递给 transFrom 函数时,我们实际上是在传递 show 函数的地址,这使得 transFrom 能够调用 show 函数来处理数组中的每个元素。

这里的关键点是,show 函数的签名(即它接受一个整型指针作为参数且没有返回值)与 pFunCallBack 类型相匹配,这意味着 show 可以被安全地存储在 pFun 函数指针变量中,并在 transFrom 函数内部被调用。

transFrom 在其循环中遇到数组的每个元素时,它通过 pFun 指针调用 show 函数,传递当前元素的地址。show 函数随后使用 printf 打印该元素的值。这种设计允许 transFrom 函数非常灵活,因为它可以被配置为使用不同的回调函数执行不同的操作,而不必修改函数本身。


 数组指针指向的是数组的地址,函数指针指向的是函数的地址,函数的名字表示地址的首元素

这里参数的实际含义是:把show的地址作为一个参数传递给transFrom,并在transFrom解引用打印输出数组中的数据

#define  _CRT_SECURE_NO_WARNINGS
#include "math.h"
#include <string.h>
#include "add.h"
#include <stdint.h>
#include <stdio.h>
#include <stdlib.h>

// 创建函数指针类型
typedef void(*pFunCallBack)(int);

// 回调登记函数
void transFrom(int arr[],int len,pFunCallBack pFun) 
{
	for (int i; i < len; i++) 
	{
		pFun(arr[i]);
	}
}

// 回调函数用来输出数组中的数据
void show(int num) 
{
	printf("%d ", num);
}


int main()
{
	int arr[5] = { 1,2,3,4,5 };
	transFrom(arr, 5, show);
	return 0;
}


#define  _CRT_SECURE_NO_WARNINGS
#include "math.h"
#include <string.h>
#include "add.h"
#include <stdint.h>
#include <stdio.h>
#include <stdlib.h>

// 创建函数指针类型
typedef void(*pFunCallBack)(int*);

// 回调登记函数
void transFrom(int arr[],int len,pFunCallBack pFun) 
{
	for (int i = 0; i < len; i++) 
	{
		pFun(&arr[i]);
	}
}

// 回调函数用来输出数组中的数据
void show(int *num) 
{
	printf("%d ", *num);
}

void add1(int *num) 
{
	(*num)++;
}

// 把数组逆序
void reverse(int* num) 
{
	// 获取到数组的一个
	if (*num < *(num + 1)) 
	{
		int t = *num;
		*num = *(num + 1);
		*(num + 1) = t;
	}
}

int main()
{
	int arr[5] = { 1,2,3,4,5 };
	transFrom(arr, 5, show);
	transFrom(arr, 5, add1);
	putchar('\n');
	transFrom(arr, 5, show);
	putchar('\n');
	for (int i = 0; i < 5; i++) 
	{
		transFrom(arr, 5, reverse);
	}
	transFrom(arr, 5, show);
	return 0;
}

 可以参考一下这篇文章

【C语言】回调函数_c语言回调函数-CSDN博客文章浏览阅读1.5w次,点赞13次,收藏47次。回调函数文章目录前言一、pandas是什么?二、使用步骤1.引入库2.读入数据总结前言随着我们对C语言的学习以及对指针更加深入的了解,我们避免不了接触到回调函数,以下是关于回调函数的知识分享。一、回调函数是什么?回调函数就是一个通过函数指针调用的函数。如果你把函数的指针(地址)作为参数传递给另一个 函数,当这个指针被用来调用其所指向的函数时,我们就说这是回调函数。回调函数不是由该函数._c语言回调函数https://blog.csdn.net/m0_62179366/article/details/123459823?spm=1001.2101.3001.6650.1&utm_medium=distribute.pc_relevant.none-task-blog-2%7Edefault%7EBlogOpenSearchComplete%7ERate-1-123459823-blog-140578269.235%5Ev43%5Epc_blog_bottom_relevance_base9&depth_1-utm_source=distribute.pc_relevant.none-task-blog-2%7Edefault%7EBlogOpenSearchComplete%7ERate-1-123459823-blog-140578269.235%5Ev43%5Epc_blog_bottom_relevance_base9&utm_relevant_index=2

举报

相关推荐

0 条评论