c语言指针函数

/*

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

原理:函数创建后,函数的代码会在内存中占据一个位置。这个时候我们创建一个指针指向这个地址,这个指针叫做函数指针。

函数指针不能移动,移动指针指向函数的下一条指令是错误的。

对函数指针的要求,

1.首先,这个指针应该和函数的返回类型相同。

2.指针的*和名称应该用括号括起来。//如果没有括起来,说明函数返回一个指针。

3.最右边括号中形参的类型和个数也要和函数定义时的形参一致,只要是类型,而不是形参名,

不过加个正式名字也是可以的。没有毛病,看起来也更清晰。

*/

#包括

void swapchar(char *a,char *b)

{

char t;

t = * a;

* a = * b;

* b = t;

}

void swapchar2(char * a2,char * b2)

{

printf("这是swap char 2 ");

}

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);

返回0;

}

指针函数和函数指针在C语言中有什么区别? 指针函数和函数指针在C语言中是两个不同的概念,不能混淆。

指针函数本质上是一个函数,而且是返回类型为指针的函数,比如:

int* max(int *array,int n)

{

//找到最大值的地址

回报最大值的地址;

}

Max是一个指针函数。

函数指针本质上是一个指针,是指向一个函数的指针,比如:

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

Funp是一个函数指针,可以用来指向带有两个int类型参数的函数。

c语言指针函数问答!解决问题! 因为函数原型是void f(int,int *);

第一个参数的类型是int,第二个函数是指向int的指针。

所以只有D选项f(*p,a);正确的

c语言指针函数 char *match (char*s,char ch1,char ch2)

功能各部分的含义:

第一个字符通常意味着函数的返回值是一个字符。但是后面有一个*,所以要把char和*连起来,看是char*。

然后,第一个是char*,表示函数的返回值是一个字符指针(地址)。

Match是函数的名称。

括号是函数的参数,多个参数之间用逗号分隔。在这个例子中,有三个参数:char* s、charch1和Charch2。第一个参数是S,类型为Char *(字符指针类型),后两个ch1和CH2都是Char类型(字符类型)。

这里你就知道为什么去掉* before *match是错的了。

另外,括号中的参数类型(比如包括指针)与函数返回值的类型无关。在函数名前加*只与函数返回值的类型有关。

相关文章

发表新评论