首页 > 其他 > 详细

指针函数和函数指针

时间:2015-10-20 16:30:21      阅读:227      评论:0      收藏:0      [点我收藏+]

1.指针(型)函数

指针函数概念:

  本质上还是个函数,因其返回值是一个指针而得名。

  在C语言中允许一个函数的返回值是一 个指针(即地址),这种返回指针值的函数称为指针型函数

指针函数的定义和使用:

  • 格式:
    类型说明符 *函数名(形参表) {
      /*函数体*/
    }
    其中函数名之前加了“*”号表明这是一个指针型函数,即返回值是一个指针。类型说明符表示了 返回的指针值所指向的数据类型。
#include <stdio.h>
char *func(char str[]);
char *function(char *p);

int main(int argc, const char * argv[]) {
    /*
     返回指针的函数
     */
    char cs[] = "VSVSVSVSVS";
    char *str = func(cs);
    
    printf("%s\n",str);
    
    char *str2 = function(cs);
    printf("%s\n",str2);
    return 0;
}

// 定义一个返回指针的函数
char *func(char str[]) // 传数组
{
    str[0] = !;
    return str;
}

char *function(char *p) // 传指针
{
    p[0] = @;
    return p;
}

 

2.函数(型)指针(重点)

函数指针:

  本质上是一个指针,因该指针指向的是一个函数而得名。

为什么指针可以指向一个函数?

  函数作为一段程序,在内存中也要占据部分存储空间,它也有一个起始地址,即函数的入口地址。函数有自己的地址,那就好办了,我们的指针变量就是用来存储地址的。因此,可以利用一个指针指向一个函数。其中,函数名就代表着函数的地址

函数指针的定义和使用:

格式:

函数的返回值类型 (*指针变量名)(形参1, 形参2, ...);
  • 其中“类型说明符”表示被指函数的返回值的类型。
  • “( 指针变量名)”表示“”后面的变量是定义的指针变量。
  • 最后的空括号表示指针变量所指的是一个函数。

// 无参数,无返回值的函数型指针

#include <stdio.h>
void func();

int main(int argc, const char * argv[]) {

    void (*funcP)(); // 定义指向函数的指针
    funcP = func; // 初始化 指向函数的 指针
func(); // 方法一:函数调用 (*funcP)(); // 方法二: 利用指针调用函数 funcP(); // 方法三: 利用指针调用函数 } void func() { printf("我被执行了!"); }

 

// 有参数,无返回值的函数型指针

#include <stdio.h>
void sum(int v1,int v2);

int main(int argc, const char * argv[]) {

    void (*sumP)(int,int); // 定义一个指向函数的指针
    sumP = sum; // 初始化函数指针
sumP(10,20); // 利用函数指针调用函数 (*sumP)(20,30); // 利用函数指针调用函数 // *sumP(20,30); // 错误写法,因为()的优先级高于* } void sum(int v1,int v2) { printf("sum = %d\n",v1 + v2); }

 

// 无参数,有返回值的函数型指针

#include <stdio.h>
int getAge();

int main(int argc, const char * argv[]) {

    int (*getAgeP)();
    getAgeP = getAge;

    int age1 = getAgeP();  // 利用函数指针调用函数
    int age2 = (*getAgeP)(); // 利用函数指针调用函数

    printf("%d,%d",age1,age2);

}

int getAge()
{
    return 26;
}

 

// 有参数,有返回值的函数型指针

#include <stdio.h>
int minus(int, int);

int main(int argc, const char * argv[]) {

    int (*minusP)(int,int); // 定义一个指向函数的指针
    minusP = minus; // 初始化函数指针

    int res = (*minusP)(20,1); // 利用函数指针调用函数
    int result = minusP(90,9); // 利用函数指针调用函数
    printf("res = %d,result = %d\n",res,result);
}

int minus(int val1, int val2)
{
    return val1 - val2;
}

 

指针函数和函数指针

原文:http://www.cnblogs.com/wsnb/p/4894891.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!