c语言中的指针型函数 c语言 指针函数

c语言指针型函数#includestring.h// 导入头文件string.h
#includestdio.h// 导入头文件stdio.h
char *fun(char *t)// 定义函数, 名称fun, 输入参数为char *, 返回值为char *
{
char *p = t;// 把t的值赋值给p, 相当于p指向与t相同的字符串
return p + strlen(t) / 2;// strlen返回值为字符串长度, 然后p位移其一半(向下取整)的距离并返回值
}
int main(int argc, char *argv[])
{
char *str = "abcdefgh"; // str指向字符串“abcdefgh”
str = fun(str);// str调用fun函数, 参数为str, 并将返回值赋值给str
puts(str);// 此时str指向e, 输出为“efgh\n”
return 0;
}
c语言 指针 函数这样说吧:
有2个箱子,编号分别是a , b,a装了一个苹果 , b装了一个梨子,
【c语言中的指针型函数 c语言 指针函数】有2张纸,编号分别是p,q,p纸上写着a,q纸上写着b 。
1、现在我准备一张白纸,编号为t , 把p纸上写的a抄到t上,然后擦掉p纸上的a,写成b;把q纸上的b摖掉,然后把t纸上写的a抄到q纸上 , 那苹果和梨子交换了吗?
2、现在我准备一个空箱子,编号为t,根据p纸上写的箱子编号a , 把a箱子中的东西取出并放到箱子t,根据q纸上写的箱子编号b,把b箱子中的东西取出并放到p纸上写的箱子a中,然后把t箱子中的东西取出放到q纸上写的箱子b中,苹果和梨子交换了吗?
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语言指针函数?如果在程序中定义c语言中的指针型函数了一个函数c语言中的指针型函数,那么在编译时系统就会为这个函数代码分配一段存储空间,这段存储空间c语言中的指针型函数的首地址称为这个函数的地址 。而且函数名表示的就是这个地址 。既然是地址我们就可以定义一个指针变量来存放 , 这个指针变量就叫作函数指针变量,简称函数指针 。
那么这个指针变量怎么定义呢?虽然同样是指向一个地址 , 但指向函数的指针变量同我们之前讲的指向变量的指针变量的定义方式是不同的 。例如:

推荐阅读