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是错的了。
另外,括号中的参数类型(比如包括指针)与函数返回值的类型无关。在函数名前加*只与函数返回值的类型有关。
最后更新于 2023-10-11 11:38:33 并被添加「」标签,已有 位童鞋阅读过。
本站使用「署名 4.0 国际」创作共享协议,可自由转载、引用,但需署名作者且注明文章出处
相关文章