文章目录
六、函数指针
顾名思义,函数指针就是指向函数的指针,即存放函数地址的指针。
void test()
{
printf("hehe\n");
}
int main()
{
printf("%p\n", test);
printf("%p\n", &test);
return 0;
}
输出结果:
我们发现函数名与取地址函数名内容相同,此处需要注意的是:
数组名 != &数组名
函数名 = &函数名
函数指针的定义:
与数组指针的定义类似,我们需要这样来定义一个函数指针:
int Add(int x , int y)
{
return x+y;
}
int main()
{
int (*pf)(int , int) = &Add;//定义一个函数指针
}
需要注意的是:
其中第一个int表示函数返回值类型,因为我们的Add()函数的返回值是int类型,所以此处用int。
(*pf)是表示pf是一个指针,为了让它先和*结合起来所以用括号圈起来,这和数组指针类似。
(int ,int)则表示Add()函数的参数类型。
既然如此,那么如何去使用这个函数指针呢?请看下面代码:
int Add(int x, int y)
{
return x + y;
}
int main()
{
int (*pf1)(int, int) = &Add;//定义一个函数指针
int ret1 = (*pf1)(10, 6);//利用函数指针调用函数
int (*pf2)(int, int) = Add;//因为Add和&Add一样,所以此处这样写也没问题!
//由上面得出:Add === pf2
//既然Add === pf2,那么下面的用法:
int ret2 = pf2(10, 6);//这也是没问题的
printf("%d\n", ret1);
printf("%d\n", ret2);
return 0;
}
对pf解应用(*pf)就找到了这个函数,再传参就可以调用该函数。
注意,一定要加括号括起来:(*pf)
但是,这里的*号其实是摆设,直接使用pf(10,6)
也没啥问题!
当然啦,只有在函数指针这里这个*才可以省略!其他指针都不可省略解应用符号
输出结果:
阅读以下两个代码加深对函数指针的理解:
//代码1
(*(void (*)())0)();
//代码2
void (*signal(int , void(*)(int)))(int);
解释:
七、pandas是什么?
示例:pandas 是基于NumPy 的一种工具,该工具是为了解决数据分析任务而创建的。
八、使用步骤
1.引入库
代码如下(示例):
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
import seaborn as sns
import warnings
warnings.filterwarnings('ignore')
import ssl
ssl._create_default_https_context = ssl._create_unverified_context
2.读入数据
代码如下(示例):
data = pd.read_csv(
'https://labfile.oss.aliyuncs.com/courses/1283/adult.data.csv')
print(data.head())
该处使用的url网络请求的数据。
九、
提示:这里对文章进行总结:
例如:以上就是今天要讲的内容,本文仅仅简单介绍了pandas的使用,而pandas提供了大量能使我们快速便捷地处理数据的函数和方法。