
/*求a+b*/
int plus(int a, int b) { return a + b}
/*求a-b*/
int minus(int a, int b) { return a - b}
/*求a*b*/
int multiply(int a, int b) { return a * b}
/*求a/b*/
int divide(int a, int b) { return a / b}
typedef int (*FUN)(int,int)/*定义基本四则运算的标准形式*/
char op[]="+-*/"/*四则运算的符号*/
FUN fun[]={&plus, &minus, &multiply, &divide}/*四则运算的函数指针*/
/*下面的程序演示了如何用一个通用的函数指针连续处理多种不同的函数运算*/
int main(void)
{
int a = 6, b = 3, i = 0
for(i = 0i <4i++)
printf("%d %c %d = %d\n", a, op[i], b, (*(fun + i))(a,b))
return 0
}
/*运行结果:
6 + 3 = 9
6 - 3 = 3
6 * 3 = 18
6 / 3 = 2
上面的程序说明,如果你有很多种类似的 *** 作,形式上都一致,只不过内容有所不同,那么你可以用函数指针去代替这些函数,这样有时候会很方便
*/
1、指针概念:变量的地址(计算机内存字节的编号)叫做指针,存放变量地址的变量叫指针变量,
简言之,指针是用来存放地址的。
2、作用:指向这个变量或数组的首地址,是变量的间接引用方式。其值如果改变,变量的值或数组元素的值也会跟着改变。程序对变量的 *** 作实际上是对变量所在的存储空间读取和写入数据。方便对变量的 *** 作。
举例说明:
int
a=3/*定义一个整型变量a,并赋初值3*/
int
*p/*定义一个指针变量P*/
p=&a/*让p指向a的首地址,也就是a的地址*/
程序为a分配一个2个字节的存储单元,假如2个字节的地址分别为(ABCD1和ABCD2,唯一),那么p里面放的值就是ABCD1,不是3。这时可通过p直接引用a,实际上*p=3。以后不管a存放在内存中的哪个地方,只用通过调用p就可以引用a。这时如果令*p=4,则最后的a值也为4。对于数组,指针是指向数组的首地址。
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)