C++ 函数指针的详解

2015-01-24 13:19:05 · 作者: · 浏览: 3

1.函数指针

(1)一般来说函数通常包括一系列指令,通过编译后,在内存中占据了一块存储空间。

它有一个起始地址,这个起始(入口)地址就称为函数的指针。

(2)主函数在调用子函数时,就是让程序转移到函数的入口地址开始执行。

(3)我们可以定义一个指针变量用来指向函数,然后通过使用该指针变量调用此函数。

指向函数的指针:就是能够存放某个函数入口地址的指针变量。


总结了一下,函数指针有两个用途:一个是调用函数,另一个是做函数的参数

函数指针定义的一般形式:

数据类型 (*指针变量名)(参数表);

例如:

int (*p)(); // p为指向返回值为整型数据的函数的指针
float (*q)(float,int); // q为指向返回值为浮点型数据的函数的指针


2.函数指针调用函数的步骤

(1)函数指针变量先要指向函数

定义了指向函数的指针变量,就可以在指针变量与特定函数之间建立关联,让指针变量指向特定函数。

要注意一下:

(1)指针变量只能指向定义时所指定的一类函数。

(2)一个指针变量可以先后指向多个不同的函数。


具体代码:

#include

int arr_add(int (*arr)[4], int n, int m )

void main()
{
int a[3][4] = {1,3,5,7,9,11,13,15,17,19,21,23};
int *p, total1, total2;
int (*pt)(int (*arr)[4], int n, int m );
pt=arr_add;
total1 = arr_add( a,3,4 );
total2 = (*pt)( a,3,4 );
printf( "total1 = %d, total2 = %d\n", total1,total2 );
}

int arr_add(int (*arr)[4], int n, int m )
{
int i, j, sum=0;
for(i=0;i for( j = 0; j < m; j++ )
sum += arr[i][j];
return (sum);
}