这算我第一篇比较正式的学习性播客吧,我想大概说一下C语言指针上的问题。
int i; //定义整形变量
int *p; //定义一个指向int的指针变量
int a[10]; //定义一个int数组,有十个元素
int *p[10]; //定义一个指针数组,其中每个数组元素指向一个int型变量地址
int (*p)[10]; //定义一个数组指针,指向int[10]列席指针变量
int fun(); //定义一个函数,返回值为int型
int *fun(); //定义一个函数,返回值为int*.(指针函数)
int (*p)(); //定义一个指向函数指针,函数原型为无参,返回值为int.(函数指针)
int **p; //定义一个指向int型的指针的指针,也就是二级指针
我想重点说到的就是指针函数和函数指针这两个概念。
指针函数,顾名思义,他就是一个返回值类型为指针的函数,就像int fun()这个函数返回值为int一样,int *fun(),这个函数的返回值就是一个指针,当然不止是C语言中的基础类型,我们用struct等自己定义的结构体也可以用来作为函数的返回值,比如:
typedef struct STUDENT{
int var;
}Student;
Student* fun()
{
//实现函数代码
}
函数指针,我们可以理解为有一个指针,指向了一个函数,我想我们用代码看起来能更好理解一点。
//比如我们定义一个函数
int fun1()
{
//代码段
}
//定义一个函数指针
int (*p1)();
//这个时候我们就可以用指针去指向这个函数
p1 = fun1;
//至于函数指针后面的那个括号内的东西,传入的则是函数参数的类型
//比如:我们定义一个带参数的函数
int fun2(int a, int b)
{
//代码段
}
//我们再定义一个函数指针
int (*p2)(int , int );
//我们再用指针p2去指向这个函数
p2 = fun2;
至于函数指针指向的类型,和前面一样,我们也可以用自定义类型struct去作为函数的返回值,这里就不再举例了。感谢大家观看,本文章纯属个人原创,如有雷同,纯属巧合。