C语言中的指针。

这算我第一篇比较正式的学习性播客吧,我想大概说一下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去作为函数的返回值,这里就不再举例了。感谢大家观看,本文章纯属个人原创,如有雷同,纯属巧合。

猜你喜欢

转载自blog.csdn.net/qq_29342297/article/details/83245882