大家好!从今天起,我将把我对于C,C++学习中的一些总结体会以博客的形式变现出来。希望跟大家一起交流,指出我的不足和错误,一起进步。我要感谢近期来指导我的老师们,最近学到的东西,真的很多。好了,下面就开始吧。

       关于C语言,指针那一块内容,我想会令很多人头疼吧。以前听人家说过这么一句话,“C语言行不行,就看你指针用的溜不溜。”的确,指针的用法很灵活,今天我要说的就是我对于“指针函数”与“函数指针”的一些体会总结。可能有没提到的,希望大家提醒。

       1.“函数指针”

       从它的字眼我们可以看出来,它是一个指针,指向一个函数。那么我们就疑惑了,指针指向函数是怎么实现的呢?

        原来在一个程序运行过程中,函数代码执行算法指令,它也占据一定的内存空间。那么自然,它就会有相应地址。而我们的函数指针,其实,指向的就是这个函数的相应的首地址。这样,我们会自然而然的引出函数指针的赋值问题,下面以例子说明:

#include<stdio.h>

int Add(int a,int b) //定义一个函数,求两个×××数之和
{
 return a+b;//返回两数之和
}

int main()
{
 int (*p)(int ,int) = NULL;//定义一个函数指针,函数返回类型为int型,形参为两个整型数
 p = Add;//这里,我们将函数Add的首地址赋值给指针变量p
 printf("a+b=%d\n",p(3,6));
 return 0;
 
}

       最后,运行结果为a+b=9;

        至此我们可以发现,函数指针调用函数,其实就是通过指针指向函数首地址调用函数的。定义函数指针的一般格式为:

           函数类型(*指针变量名)(形参列表);

     2.“指针函数”

          还是一样,从字面义上看,它是一个函数。而“指针”是指这个函数的返回是指针类型。

         接上面说的“函数指针”,指针函数一般格式为:

            类型标识符    *函数名(参数表)

             举个使用指针函数的简单例子:
 #include<stdio.h>

char *Show(char str[2])//定义的指针函数
{  
       str[0]='a';//把数组首元素设置为字符a
 return(str);//返回值
}

int main()
{
 char str[2];
 gets(str);
 
 printf("%s\n",Show(str));
 return 0;
 
}

          结果实现:输入c,d

                                输出结果为a,d