c语言函数含指针 c语言函数含指针吗

c语言函数与指针

先学指针再学函数为好。函数调用,若想通过参数带回函数运算结果,要用指针。函数调用,若想通过参数传入可变大小的数组,要用指针。 这时若缺乏 指针的知识,则难以学好函数的书写。当然,你可以先学简单的函数,参数不用指针的,只通过函数返回或全局量传递运算结果,只用固定大小的数组。学会后,再学指针和 用指针做参数的函数。这样,路走得慢些,但学得可能扎实些。

从事联通机房服务器托管,服务器租用,云主机,网页空间,空间域名,CDN,网络代维等服务。

C语言-函数指针

/*

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

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

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

函数指针的要求,

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语言中函数名就是一个指针吗

是的。函数指针就是函数的指针,它是一个指针,指向一个函数。这正如用指针变量可指向整型变量、字符型、数组一样,这里是指向函数。

例:

A) char * (*fun1)(char * p1,char * p2);

B) char * *fun2(char * p1,char * p2);

表达式相比,唯一不同的就是函数的返回值类型为char**,是个二级指针。

C) char * fun3(char * p1,char * p2);

fun3是函数名,p1,p2是参数,其类型为char *型,函数的返回值为char *类型。

扩展资料

函数指针使用的例子

#include stdio.h

#include string.h

char * fun(char * p1,char * p2)

{

int i = 0;

i = strcmp(p1,p2);

if (0 == i)

{

return p1;

}

else

{

return p2;

}

}

int main()

{

char * (*pf)(char * p1,char * p2);

pf = fun;

(*pf) ("aa","bb");

return 0;

}


网站标题:c语言函数含指针 c语言函数含指针吗
转载注明:http://ybzwz.com/article/ddscheg.html