正文
c语言函数返回形参的指针 c语言函数返回参数
小程序:扫一扫查出行
【扫一扫了解最新限行尾号】
复制小程序
【扫一扫了解最新限行尾号】
复制小程序
c语言中如何用返回函数指针
举个两个整数加法的例子,希望对你有帮助:
#include stdio.h#include conio.h
//声明指向函数的指针类型fpAddc语言函数返回形参的指针,该类型的函数c语言函数返回形参的指针,有两个整数作为参数c语言函数返回形参的指针,返回值是一个整数。
//其他类型的函数指针声明方式类似c语言函数返回形参的指针,即c语言函数返回形参的指针:typedef 函数返回值类型 (*函数指针类型名称)(函数参数列表);
typedef int (*fpAdd)(int a,int b);
//声明两个和fpAdd类型一致的函数
int AddTest(int a,int b);
int AddTestAdd5(int a,int b);
//声明两个返回函数指针的函数
fpAdd GetAddFun();
fpAdd GetAdd5Fun();
void main()
{
int a = 1;
int b = 2;
int sum;
//取得指向函数(AddTest)的指针
fpAdd add = GetAddFun();
//取得指向函数(AddTestAdd5)的指针
fpAdd add5 = GetAdd5Fun();
//通过函数指针调用函数。
sum = add(a,b);
//输出结果
printf("a+b=%d\n",sum);
sum = add5(a,b);
//输出结果
printf("a+b=%d\n",sum);
getch();}
int AddTest(int a,int b)
{
return a+b;
}
int AddTestAdd5(int a,int b)
{
return a+b+5;
}
fpAdd GetAddFun()
{
return AddTest;
}
fpAdd GetAdd5Fun()
{
return AddTestAdd5;
}
C语言指针作函数参数时的返回问题
首先c语言函数返回形参的指针,弄懂函数参数都是靠值传递。指针也是。
进入函数后,函数创建几个空间给形参,再把实参数值拷过来。退出函数时,把形参空间释放,则影响不到实参。这就是值传递。
swap(int *p1,int *p2)函数首先创建两个空间,是指针,再把实参复制过来,即p1=pointer_1=a,p2=pointer_2=b,改变p1,p2就分别指向了a,b.改变p1指向c语言函数返回形参的指针的值就是改变了a。然后交换*p1,*p2,ab就互换了。函数退出,释放p1,p2所占c语言函数返回形参的指针的内存空间。但是a,b值互换了。swap函数没有改变实参pointer_1,pointer_2c语言函数返回形参的指针的内容,只是借助指针实现了巧妙的乾坤大挪移。
学到c++后有个引用例外,那是后话了。
++++++++++++++++++++++华丽丽的分割线+++++++++++++++++++++
其实很简单,不要硬记规律,要理解了。
第二个例子中swap(int x,int y)没有改变原来实参a,b的值
第一个例子中swap(int *p1,int *p2)也没有改变原来两个实参pointer_1,pointer_2的值,c语言函数返回形参的指针他们值分别是是a,b地址,但pointer_1,2指向的内容改变了,改的是以pointer_1,pointer_2的值为地址的内存单元的值。
C语言怎么让一个函数返回指针
这种方式叫做“用指针函数*creat()c语言函数返回形参的指针的返回值来传递动态内存”c语言函数返回形参的指针,这是一个C语法
首先你要注意,子函数*creat()用了malloc动态申请内存,而return返回的是指针变量所指向的地址,而不是指针!相当于将你所申请的动态内存返回给主函数
int
*fun(void)//这里是指针函数
{
int
*p
=
(int
*)
malloc
(int);//动态申请内存//p在这里指向了一块合法内存的地址
return
p;
}
void
main(void)
{
int
*q
=
NULL;
q
=
fun();//fun()返回指针p所指向的地址,(指针p是在栈上创建的,所以*fun()函数运行完,指针所分配的内存被系统自动释放)这时q指向p,得到了malloc所申请到的内存
free(q);//释放动态内存
}
c语言 指向返回指针的函数的指针的写法
你c语言函数返回形参的指针的陈述不太全c语言函数返回形参的指针,缺返回c语言函数返回形参的指针的指针指向的类型。写法如下c语言函数返回形参的指针:
char *(*p)(int,int);//声明p是指向一个具有两个int型形参的函数c语言函数返回形参的指针,函数返回一个char *型指针。
C语言如何声明一个返回函数指针的函数?
C语言指向函数的指针承载的信息比较复杂,组织起来要素要写全。根据指向函数的指针的书写语法,下面的代码就是一个返回函数指针的函数:
int (*f(void))(int){//f是函数,没有参数,返回指向一个函数的指针;这个被指向的函数有一个int型形参,且返回一个int值
return fun;//fun是个函数名,必须具备一个int形参、返回int值的要求
}
以下代码可以验证上述函数的正确性:
//#include "stdafx.h"//If the vc++6.0, with this line.
#include "stdio.h"
int fun(int n){
printf("abcdef\n");
return n;
}
int (*f(void))(int){
return fun;
}
int main(void){
printf("%d\n",f()(100));//调用函数f,通过f返回的指针用100调用函数fun
return 0;
}
输出是:
abcdef
100
C语言中如何定义一个返回值为char *的函数指针。
C语言中c语言函数返回形参的指针,函数的定义格式c语言函数返回形参的指针:函数返回值类型 函数名 (形参列表)。
所以c语言函数返回形参的指针,返回值为char* 的函数指针的定义格式是c语言函数返回形参的指针:
char* (*指针变量名)(函数形参列表)
{
函数体;
}
c语言函数返回形参的指针的介绍就聊到这里吧,感谢你花时间阅读本站内容,更多关于c语言函数返回参数、c语言函数返回形参的指针的信息别忘了在本站进行查找喔。