c语言指针定义函数指针
① c语言函数指针定义法
1
typedef int (*Fptr)(int , int );
Fptr fptr = NULL; (此处的Fptr是数据类型?)
使用了typedef,Fptr就是数据类型,代表int (*XXX)(int , int );这一堆
如果写成Fptr fptr,意思就是int (*fptr)(int , int );了
你的理解没有错,Fptr就是返回值是int,参数是两个int的函数指针类型,fptr才是函数指针变量
2
int (*Fptr)(int , int ) ;
Fptr = NULL; (此处的Fptr是函数指针变量?)
Fptr就是一个返回值是int,参数是两个int的函数指针变量了
② c语言如何定义一个指向指针函数的函数指针
void*f(int);//一个指针函数f
void*(*p)(int)=f;//一个指向f的函数指针p
③ C语言指针基本概念及其指针变量的定义是什么
指针是常见间接访问方式.指针就像一个快捷方式,它指向内存的一个地址,可以通过指针就可以间接的访问到数据。对于计算机,访问内存的方式有两种,直接访问和间接访问。直接访问通过就是通过变量名称去访问。指针概念是构成C/C++的重要元素之一,是变量的一种类型,存放的是指定类型数据的地址,而同类型变量存放的是数据。
指针变量:就是一个变量,其值是可变的,与整形变量、浮点变量等等的命名规则完全相同。 “指针”是概念,“指针变量”是具体实现。指针类型说明,即定义变量为一个指针变量; 指针变量名; 变量值(指针)所指向的变量的数据类型。
(3)c语言指针定义函数指针扩展阅读:
与其他高级编程语言相比,C 语言可以更高效地对计算机硬件进行操作,而计算机硬件的操作指令,在很大程度上依赖于地址。指针提供了对地址操作的一种方法,因此,使用指针可使得 C 语言能够更高效地实现对计算机底层硬件的操作。另外,通过指针可以更便捷地操作数组。在一定意义上可以说,指针是 C 语言的精髓。
④ C语言中的函数指针
函数指针是定义一个指向函数的指针,形式为:void (*p)(void);
一般用法:
int fun1(int x);
int fun2(int x);
char fun3(int x);
int fun4(char x);
int main(void)
{
int (*p)(int x);
p=fun1; //指向fun1
p(2) //这时等价于fun1(2)
p=fun2; //也可以指向fun2
。
。
但是注意了,p=fun3;和p=fun4都是错误的,参数类型跟返回类型必须一样。
至于指针函数,就是返回一个指针的函数。
基本形式:int *fun(void);
一般用法:
int *fun(void);
int main(void)
{
int *p=NULL; //声明一个整型指针变量
p=fun(); //接收fun()的返回值
。
。
⑤ c语言的函数指针举个例子
返回指针函数的原型:类型名*函数名(参数列表);
如果按照你的vod * func(void) {}感觉不太对。既然有返回值(指针),怎么会是void呢。所以显示不对。
下面写了一个返回指针值的函数的例子。你可参考下:
#include<stdio.h>
char*func(void)
{
staticchara[20]="Hello,Clanguage.";
returna;
}
voidmain(void)
{
char*p;
p=func();
while(*p)
printf("%c",*p++);
printf(" ");
}
⑥ C语言指针的定义
指针就是地址。
你说的是指针变量。
整形变量,浮点变量,字符变量,指针变量。通过起名的规律就知道指针变量是储存地址的。
指针变量和其他变量的用法一样,作用域一样。在一个子涵数中定义指针变量,是局部变量,其他函数是不能用的。
不要把指针变量想的太复杂,地址(指针)也是数据,和其他字符数据,整形数据一样,没什么差异。
当然,全局变量的指针变量当然可以多函数使用。
指针的定义:地址。
指针变量的定义:存储指针的变量。
⑦ c语言的自定义函数里面的指针声明该怎么做
这个函数接受2个整形,m和n,
函数内容是一个循环,进行n次,每次将p(初始值1)赋值为p*m,最后返回p的值。
比如x=p(2,3).
就是m=2,n=3.
运行3次循环,第一次,p=p*m=1*2=2,
第二次,p=p*m=2*2=4,
第三次,p=p*m=4*2=8.
最后返回8,x=8.
⑧ C语言函数指针
C语言函数前面加个指针 表示函数的返回值是指针类型的。实例: #include using namespace std; int* lpfun1(int,int); //声明一个返回指针为int类型的函数 void main() { int *result=lpfun1(10,20); printf("%d\n",*result); delete result;//删除堆中的指针 result=0;//使指针无效 } int* lpfun1(int x,int y) { int *p=new int(0); *p=x+y; return p; }
⑨ C语言中函数指针用法
在C语言中,指针被广泛使用,而函数指针是最为高级的用法之一,也是容易疑惑的地方之一。看下面这段代码:#include <stdio.h>void F(int a, int* output)
{
printf("a = %d\n", a);
*output = a + 1;
}typedef void (*FUNC)();int main()
{
FUNC f = F;
int ret = 0;
f(3, &ret);printf("ret = %d\n", ret);
return 0;
}上面看出 FUNC 的类型是与F的类型不匹配的,这样可以通过编译吗?答案是: 可以的。由于在C语言中编译函数的时候,是仅仅将其函数名作为该函数的
唯一标识,为其分配相应地址。所以虽然FUNC 与 F的类型不一致,但是对于编译器看来
都是两个地址,是无所谓的。用上面的特点,可以写出非常通用的函数指针类型,typedef int (*FUNC)(); 这里之所有要有返回值,是用来标识该函数是否执行成功的错误代码标志。 随说做了有一段时间的C了,但尽然没有搞明白函数指针的用法,见到了也没有好好研究,今天终于有时间了,在网上搜了一下,终于弄懂了.原来就是定义了一个指针变量,只不过形式有点怪罢了.其实还是当成指针用就行了!一般有两种用法:1定义函数指针int (*functionPoint)(int, int)----这只是定义了一个指向函数的指针int a(int a,int b)----------------这是与之相符的函数原型void main()-----------------------使用{ functionPoint = a;------------先赋值 functionPoint(1,2);----------调用
}2用typedef定义使用typedef int (*functionPoint)(int,int);----------定义了一种类型名为functionPoint的指针int a(int a, int b)-----------------------------函数原型void main(){ functionPoint fun;---------------------------定义指针 fun = a;-------------------------------------赋值 fun(1,2);---------------------------------使用
}函数就是这个函数的指针.
⑩ C语言指针函数
如果在程序中定义了一个函数,那么在编译时系统就会为这个函数代码分配一段存储空间,这段存储空间的首地址称为这个函数的地址。而且函数名表示的就是这个地址。既然是地址我们就可以定义一个指针变量来存放,这个指针变量就叫作函数指针变量,简称函数指针。
那么这个指针变量怎么定义呢?虽然同样是指向一个地址,但指向函数的指针变量同我们之前讲的指向变量的指针变量的定义方式是不同的。例如:
int(*p)(int, int);
这个语句就定义了一个指向函数的指针变量 p。首先它是一个指针变量,所以要有一个“*”,即(*p);其次前面的 int 表示这个指针变量可以指向返回值类型为 int 型的函数;后面括号中的两个 int 表示这个指针变量可以指向有两个参数且都是 int 型的函数。所以合起来这个语句的意思就是:定义了一个指针变量 p,该指针变量可以指向返回值类型为 int 型,且有两个整型参数的函数。p 的类型为 int(*)(int,int)。
所以函数指针的定义方式为:
函数返回值类型 (* 指针变量名) (函数参数列表);
“函数返回值类型”表示该指针变量可以指向具有什么返回值类型的函数;“函数参数列表”表示该指针变量可以指向具有什么参数列表的函数。这个参数列表中只需要写函数的参数类型即可。
我们看到,函数指针的定义就是将“函数声明”中的“函数名”改成“(*指针变量名)”。但是这里需要注意的是:“(*指针变量名)”两端的括号不能省略,括号改变了运算符的优先级。如果省略了括号,就不是定义函数指针而是一个函数声明了,即声明了一个返回值类型为指针型的函数。
那么怎么判断一个指针变量是指向变量的指针变量还是指向函数的指针变量呢?首先看变量名前面有没有“*”,如果有“*”说明是指针变量;其次看变量名的后面有没有带有形参类型的圆括号,如果有就是指向函数的指针变量,即函数指针,如果没有就是指向变量的指针变量。