指针在函数的应用,指针在函数中如何应用

1,指针在函数中如何应用这个问题不难!可以作为参数在函数之间传递,这样就可以在函数内部对指针所指向的内容进行改变了 。在过程设计,函数之间实现数据共享中的应用: 1.作为基本的加工参数,被调函数需要改写主调实参的值、作为出口参数时 。2.当实参对象域所占内存空间较大,使传递过程具有效率时(构造数据类型的指针) 。3.作为模块的分层设计,引入一个泛化的抽象组件(函数指针) 。机制的易见优点: 4.数组操作的代码简化 , 提高效率 。5.字符串的处理 6.一个数据对象的多个"引用" 7.内存管理 8.可实现复杂的数据结构 ...
2 , c语言指针函数的应用能举个简单点的例子吗越简单越好啊搜int (*p)(参数表列)这个是定义一个指向函数的指针,返回值为整型 。比如int max(int a,int b)将max换成(*p)即可,p里放的是max函数的入口地址,所以,此时的p做自加自减等运算无意义 。不能用*(p+1)表示函数的下一条指令 。int *p()是函数,此函数的返回值是个指向整型变量的指针变量 。***************************************************以上是你需要的,下面是一些其它相关容易混淆的:int *p[n]:定义指针数组P,它由n个指向整型数据的指针元素组成 。int (*p)[n]:P为指向含n个元素的一维数组的指针变量 。【指针在函数的应用,指针在函数中如何应用】
3,函数指针怎么用函数指针?就是指向函数的指针,指针你知道吗?把函数看作一种类型,函数指针就指向函数这种类型的指针 。你怎么没有看到灵活性呢?那我直接用函数名就调用了呀 , 为什么还要去转一次?当然,我的只是作为一个弥补罢了,你没有贴出调用DLL的代码,我也就免了 。:)To Nicrosoft(奈软):也许下面的代码对你有赞助?type fProc=function:integer;function FuncA:integer;beginbegin result:=1;end;function FuncB:integer;begin result:=2;end;procedure TForm1.Button1Click(Sender: TObject);var proc:fProc; proc:=FuncA; showmessage(inttostr(proc)); proc:=FuncB; showmessage(inttostr(proc));end;type T1=function:integer;var函数指针拿来干什么?比如,f:T1;有什么意思?我总看不出它拿来干什么 。
4,指针的作用是什么)指针的操作流程申请并初始化或配置为空:int *pInt=NULL;开辟空间或使其指向对象:pInt=new Int(3);或int i=3;pint=&i;用指针(更确切地说是操作内存,在使用之前加if(pint!=NULL)或assert(pInt!=NULL)后再使用,以防内存申请失败的情况下使用指针): if(p!=NULL) {use pint};释放使用完的内存.free(pInt);置指针为空pInt=NULL;(避免野指针的出现)(3) 在函数的参数传递中,编译器总是要为函数的每个参数制作临时副本,假如参数为p的话,那么编译器会产生p的副本_p,使_p=p; 假如函数体内的程式修指针的作用:1、指针就是指向一个特定内存地址的一个变量 。c语言指针可以有效地表示复杂的数据结构、动态分配内存、高效地使用数组和字符串、使得调用函数时得到多个返回值等 。指针的应用往往与数组联系在一起 , 是最频繁的,也是最基础的 。在定义数组和函数时,系统都会为其自动分配一个指向其首地址的指针 。对于一个数组 , 其名称就是一个指针变量 。2、指针只是一个变量,它存储一个内存地址 。如果传入一个地址,比传入一个struct效率要高,因为少了一个拷贝过程 。3、指针能够有效的表示数据结构,能动态分配内存 , 能较方便的使用字符串,有效的使用数组 。4、指针直接与数据等的储存地址有关,是比较重要的 。比如,值传递不如地址传递高效,因为值传递先从实参的地址中提出值,再赋值给形参带入函数计算;而指针则把形参的地址直接指向实参地址 , 使用时直接提出数据,使效率提高,特别在频繁赋值等情况下 。5,求指针函数的使用1.函数指针定义函数类型 (*指针变量名)(形参列表);“函数类型”说明函数的返回类型 , 由于“()”的优先级高于“*”,所以指针变量名外的括号必不可少,后面的“形参列表”表示指针变量指向的函数所带的参数列表 。例如:int (*f)(int x);double (*ptr)(double x);在定义函数指针时请注意:函数指针和它指向的函数的参数个数和类型都应该是—致的;函数指针的类型和函数的返回值类型也必须是一致的 。2.函数指针的赋值函数名和数组名一样代表了函数代码的首地址,因此在赋值时,直接将函数指针指向函数名就行了 。例如 , int func(int x);/* 声明一个函数 */int (*f) (int x);/* 声明一个函数指针 */f=func;/* 将func函数的首地址赋给指针f */赋值时函数func不带括号,也不带参数,由于func代表函数的首地址,因此经过赋值以后,指针f就指向函数func(x)的代码的首地址 。3.通过函数指针调用函数函数指针是通过函数名及有关参数进行调用的 。与其他指针变量相类似 , 如果指针变量pi是指向某整型变量i的指针,则*p等于它所指的变量i;如果pf是指向某浮点型变量f的指针,则*pf就等价于它所指的变量f 。同样地 , *f是指向函数func(x)的指针,则*f就代表它所指向的函数func 。所以在执行了f=func;之后 , (*f)和func代表同一函数 。由于函数指针指向存储区中的某个函数,因此可以通过函数指针调用相应的函数 。现在我们就讨论如何用函数指针调用函数,它应执行下面三步:首先,要说明函数指针变量 。例如:int (*f)(int x);其次,要对函数指针变量赋值 。例如: f=func;(func(x)必须先要有定义)最后,要用 (*指针变量)(参数表);调用函数 。例如:(*f)(x);(x必须先赋值)【例】任意输入n个数,找出其中最大数,并且输出最大数值 。main()int f();int i,a , b;int (*p)();/* 定义函数指针 */scanf("%d",&a);p=f;/* 给函数指针p赋值,使它指向函数f */for(i=1;i<9;i++)scanf("%d",&b);a=(*p)(a,b);/* 通过指针p调用函数f */}printf("The Max Number is:%d",a)}f(int x,int y)int z;z=(x>y)?x:y;return(z);}运行结果为:343 -45 4389 4235 1 -534 988 555 789↙The Max Number is:4389【指针函数】一个函数不仅可以带回一个整型数据的值,字符类型值和实型类型的值,还可以带回指针类型的数据 , 使其指向某个地址单元 。返回指针的函数,一般定义格式为:类型标识符*函数名(参数表)int *f(x,y);其中x,y是形式参数,f是函数名,调用后返回一个指向整型数据的地址指针 。f(x,y)是函数,其值是指针 。如:char *ch();表示的就是一个返回字符型指针的函数,请看下面的例题:【例】将字符串1(str1)复制到字符串2(str2),并输出字符串2.#include "stdio.h"main()char *ch(char *,char *);char str1[]="I am glad to meet you!";char str2[]="Welcom to study C!";printf("%s",ch(str1,str2));}char *ch(char *str1,char *str2)int i;char *p;p=str2if(*str2==NULL) exit(-1);do*str2=*str1;str1++;str2++;}while(*str1!=NULL);return(p);}通过分析可得函数指针是一个指向函数的指针,而指针函数只是说明他是一个返回值为指针的函数 , 函数指针可以用来指向一个函数 。指针函数你就看成为指针就可以了 。如void test(void);指针函数他就可以定义为, typedef void (*Ttest)(void);用的时候就可以:Ttest pFunc = test;//或者为DLL的导出函数在强制Ttest转换一下就可以了 。指针函数是指函数的返回值类型是一个指针类型,1楼的好像说错了,慎重,看看我给的链接,希望对你有帮助,

    推荐阅读