最近指针和字符串、函数一系列的结合整的有点蒙,梳理了一下终于有点眉目了,用代码练习了一下
1,指针函数(返回值是指针的函数)
#include <stdio.h>
char * fun(char * arr);
int main(int argc, const char *argv[])
{
char arr[100]="hello worlde";
printf("str before::%s ",arr);
fun(arr);
printf("str after::%s ",arr);
return 0;
}
char * fun(char *arr){
while(*arr){
if(*arr == ' '){
arr++;
continue;
}
*arr -= 32;
arr++;
}
return arr;
}
2.函数指针(函数名即使函数的地址,即使函数指针)
#include <stdio.h>
char * fun(char * arr);
int main(int argc, const char *argv[])
{
char arr[100]="hello worlde";
char *(*p)(char *) = fun;
printf("str before::%s
",arr);
p(arr);
printf("str after::%s ",arr);
return 0;
}
char * fun(char *arr){
while(*arr){
if(*arr == ' '){
arr++;
continue;
}
*arr -= 32;
arr++;
}
return arr;
}
3.函数指针数组(将多个函数指针放入数组中)
#include <stdio.h>
char * fun(char * arr);
char * fun1(char * arr);
int main(int argc, const char *argv[])
{
char arr[100]="hello worlde";
char *(*p[2])(char *);
p[0] = fun;
p[1] = fun1;
printf("str before::%s
",arr);
p[0](arr);
p[1](arr);
printf("str after::%s ",arr);
return 0;
}
char * fun(char *arr){
while(*arr){
if(*arr == ' '){
arr++;
continue;
}
*arr -= 32;
arr++;
}
return arr;
}
char * fun1(char * arr)
{
while(*arr){
if(*arr == ' '){
*arr = '&';
break;
}
arr++;
}
return arr;
}
4.函数指针数组指针(将函数指针数组的地址定义为另一个指针,一般不常用,就不继续举例下去了)