c语言指针在函数间用法 在c语言中,指针在函数中是如何使用的

C语言-函数指针

/*

成都创新互联长期为数千家客户提供的网站建设服务,团队从业经验10年,关注不同地域、不同群体,并针对不同对象提供差异化的产品和服务;打造开放共赢平台,与合作伙伴共同营造健康的互联网生态环境。为忻城企业提供专业的做网站、网站设计,忻城网站改版等技术服务。拥有十多年丰富建站经验和众多成功案例,为您定制开发。

函数指针,关键是后面两个字“指针”,顾名思义,是一个指向函数的指针

原理:函数在创建好了后,函数的代码会在内存中占有个位置,这时我们创造一个指针来指向这个地址,这个指针就叫函数指针

函数指针不可以移动,想要移动指针的位置来指向函数的下一个指令的想法是错误的

函数指针的要求,

1,首先这个指针,要和函数的返回类型一样

2,指针的*和名字,要用小括号括起来//不括起来就是指针函数了,意思就变成,函数返回一个指针了

3,最右边的小括号里形参位置的类型,形参的个数,也要和函数定义时的形参一致,只要类型,不要形参名即可,

但是加上形参名也可以,没毛病,看上去也更清晰

*/

#include

void swapchar(char *a, char *b)

{

char t;

t = *a;

*a = *b;

*b = t;

}

void swapchar2(char * a2, char * b2)

{

printf("this is swapchar2");

}

int main(void)

{

char chf = 'a', chg = 'j';

void(*p)(char * a, char * b);//定义函数指针、形参名字a、b可有可无,但有的话看上去更清晰,只要函数定义的类型、参数类型、以及参数个数,与这个指针一致,那么这个指针p,就可以指向它

p = swapchar;//p指针接管swapchar函数,只要给函数名字,就可以给过去了

printf("chf=%c,chg=%c ", chf, chg);

p(chf, chg);

printf("chf=%c,chg=%c ", chf, chg);

p = swapchar2;//这里把swapchar2函数的地址,给了p,这时p从swapchar地址,转移到了swapchar2这里。

p(chf,chg);

return 0;

}

c语言中指针怎么使用?

1、使用场景

使用指针时,必须将它指向一个变量的地址或者为它分配空间方能使用,如下所示:

#includestdio.h

#include stdlib.h

int main(int argc, char const *argv[])

{

int a[5]={0,1,2,3,4};

int *b,*d;

int c=2;

int *e=a; //e指向a数组首地址

//*b=2;   无法直接初始化

//printf("%d\n", *b);

e=e+2;  //移动两个地址单元

d=c;  //d指向c的地址来表示值

c=4;   //修改原c变量的值,d指针的值会发生改变

b=(int *)malloc(sizeof(int));//为b分配一个int型空间来直接存储值

*b=2;//分配空间后可以直接赋值了

printf("this is e,b,c,d :%d %d %d %d\n",*e,*b,c,*d);

2、类型说明

(1)int *a :表示一个指向int型变量的指针,指向的是变量的地址单元

(2)char *b:表示一个指向char变量的指针

*a表示的是这个指针指向地址的值,a为此指针本身的地址,这点要明确,一般用*(a+1)、*(a+2)来表示值,如:

int nums[5]={0,1,2,3,4};

int *a=nums;

printf("%d %d %p\n",*a,*(a+1),a);

扩展资料:

指针的运算

指针指向变量地址,若原变量的内容发生了变化,它本身也会发生变化,指针之间的运算一般为值运算和地址运算

(1)值运算:直接通过*运算方式,像a+*(a+1),结果为第一个元素与第二个元素相加。

int nums[5]={0,1,2,3,4};

int *a=nums;

(2)地址运算:通过a+i的方式.指针会指向a的下i个地址。

int nums[5]={0,1,2,3,4};

int *a=nums;

a=a+2;

printf("%d\n",*a);

结果输出2。

参考资料来源 :指针-百度百科

C语言函数指针怎么用?

有函数: int fun(int a,int b);

要定义指向该函数的指针

对比指向 int a; 的指针

int *p; p = a;

p的定义是怎么来的?

首先要保证p是一个指针类型

写下(*p),

然后,考虑下p的基类型,

p的基类型就是变量a的类型int

将int 放在(*p)前面就行了

int (*p);

括号可以省略,就成了 int *p;

同理

想要实现 pf = fun;

(*pf) 将pf定义为一个指针,

将fun的类型作为pf的基类型

fun相当于一个 int (int a,int b)类型的量

int (int a,int b) (*pf);

基类型中有圆括号和中括号要后移

int (*pf)(int a,int b) ;//括号不能省略

pf = fun;

调用时

(*pf)(3,4); pf(3,4)都可以

c语言函数指针的作用。

C语言中函数指针与普通指针没什么差别,只是指向的内容不同而已。主要作用:

1、实现面向对象编程中的多态性。

2、回调函数。

函数指针是指向函数的指针变量。因此“函数指针”本身首先应是指针变量,只不过该指针变量指向函数。这正如用指针变量可指向整型变量、字符型、数组一样,这里是指向函数。

C在编译时,每一个函数都有一个入口地址,该入口地址就是函数指针所指向的地址。有了指向函数的指针变量后,可用该指针变量调用函数,就如同用指针变量可引用其他类型变量一样,在这些概念上是大体一致的。

函数指针有两个用途:调用函数和做函数的参数。


文章名称:c语言指针在函数间用法 在c语言中,指针在函数中是如何使用的
文章出自:http://abwzjs.com/article/dogspjc.html