C语言:指针函数跟函数指针的区别
指针函数和函数指针都是指针类型,主要有以下区别:
1.指针函数(pointer to function):指针函数是返回值为指针类型的函数,它本质上是一个函数,只是函数的返回值是指针类型。例如:
int* func(); // 声明一个指针函数,返回值为int类型的指针 int* p = func(); // 调用指针函数func(),将返回值赋给指针p
2.函数指针(function pointer):函数指针是指向函数的指针,它本质上是一个指针变量,指向一个函数的地址。例如:
int add(int a, int b) { return a + b; } // 定义一个函数add() int (*p)(int, int) = &add; // 声明一个函数指针p,指向add()函数的地址 int result = (*p)(2, 3); // 调用函数指针p,计算add(2, 3)的结果
3.总结: 指针函数是一个函数,它的返回值是指针类型;而函数指针是一个指向函数的指针,它保存了函数的地址,可以通过指针调用函数。
区别如下
1.
指针函数:是一个函数,返回值是一个指针,要注意返回的这个指针不能是局部变量。可以使用static修饰的变量或者申请堆空间的方式等等。
2.
函数指针:是一个指针,是一个指向函数的指针,是调用函数的入口。
本质的区别是:一个是函数 一个是指针变量
1、指针函数是指带指针的函数,即本质是一个函数。函数返回类型是某一类型的指针 类型标识符 *函数名(参数表) int *f(x,y);
2、函数指针是指向函数的指针变量,即本质是一个指针变量。 int (*f) (int x); /* 声明一个函数指针 */ f=func; /* 将func函数的首地址赋给指针f */ 希望对您有所帮助
C语言,用指针访问的方式,输入3个数,输出最小值,要分析过程,谢谢
C语言,用指针访问的方式,输入3个数,输出最小值。
因为要分析过程,c语言的//就是不运行,所以需要解释会在代码后面加这个。
#include<stdio.h>
int fun1(int *a)
{
int i, b, max;
max = a[0]; // 先让最大值为a[0]
for (i = 1; i < 3; i++) // for的目的就是比较出最大值,把最大值付给b
{
if (a[i] >= max)
b = a[i];
}
return b; // 反回最大值
}
int fun2(int *a)
{
int i, c, min;
min = a[0]; // 先让最小值为a[0]
for (i = 1; i < 3; i++) // for的目的就是比较出最小值,把最小值付给c
{
if (a[i] <= min)
c = a[i];
}
return c; // 反回最小值
}
int main()
{
int i, a[3];
printf("input three counts:");
for (i = 0; i < 3; i++)
scanf("%d", &a[i]);
printf("max is %d\n", fun1(a));
printf("min is %d", fun2(a));
}
还没有评论,来说两句吧...