c语言---函数指针

函数指针:

char *test()

int main()

{

char *name = test();

printf("name=%s\n", name);

return 0;

}

char *test()

{

return "rose";

}

指向函数的指针:

double haha(double d, char *s, int a)

{

}

掌握:

1.看懂语法

2.定义指向函数的指针

double (*p)(double, char *, int);

p = haha;

或者

double (*p)(double, char *, int) = haha;

3.如何间接调用函数

1> p(10.7, "jack", 10);

2> (*p)(10.7, "jack", 10);

定义指针变量指向sum函数

左边的int:指针变量p指向的函数返回int类型的数据

右边的(int, int):指针变量p指向的函数有2个int类型的形参

(*p)是固定写法,代表指针变量p将来肯定是指向函数

左边的void:指针变量p指向的函数没有返回值

右边的():指针变量p指向的函数没有形参

void (*p)();

// 指针变量p指向了test函数

p = test;

p();

//(*p)(); // 利用指针变量间接调用函数

//test(); // 直接调用函数

变量类型:

根据变量的作用域,可以分为:

1.局部变量:

1> 定义:在函数(代码块)内部定义的变量(包括函数的形参)

2> 作用域:从定义变量的那一行开始,一直到代码块结束

3> 生命周期:从定义变量的那一行开始分配存储空间,代码块结束后,就会被回收

4> 没有固定的初始值

2.全局变量

1> 定义:在函数外面定义的变量

2> 作用域:从定义变量的那一行开始,一直到文件结尾(能被后面的所有函数共享)

3> 生命周期:程序一启动就会分配存储空间,程序退出时才会被销毁

4> 默认的初始值就是0

时间: 2024-10-24 22:45:43

c语言---函数指针的相关文章

C#委托与C语言函数指针及函数指针数组

C#委托与C语言函数指针及函数指针数组 在使用C#时总会为委托而感到疑惑,但现在总新温习了一遍C语言后,才真正理解的委托. 其实委托就类似于C/C++里的函数指针,在函数传参时传递的是函数指针,在调用的时候通过指针访问这个函数. 在C语言中函数指针的申明如下: //可以理解为申明一个指着变量 Func ,它的类型是 返回Type(可以为 void )类型的参数,接收 (Type one,Type two,...)类型的//参数(可以不接受参数). Type *Func(Type one,Type

c语言函数指针实例

如果使用typedef 是这样的 //可以把一个小写字母变成大写 //char (*pFun)(char); typedef char (*PTRFUN)(char); PTRFUN pFun; char glFun(char a){ return a & 223;} void print(int a,PTRFUN call){ cout<<call(a)<<endl;}void main() { pFun = glFun; print('a',pFun);} 如果不使用t

c语言函数指针

1 void PrePrintOrTree(struct TreeNode* root, void (*WorkPrint)(double)){ 2     struct TreeNode* index = root; 3     if (root == NULL){ 4         return; 5     } 6     PrePrintOrTree(root->lchild,WorkPrint); 7     (*WorkPrint)(root->value); 8     Pre

C语言 函数指针的应用

简单的介绍下C语言函数指针的用法. 函数指针的声明: char (* FunPtr)(char); 或者char (* FunPtr)(char ch);  (声明类型个形参类型根据实际情况更改) 例: 1 #include"stdio.h" 2 3 char myFun(char ch) 4 { 5 printf("myFun is called, your char is %c.\n",ch); 6 return 'w'; 7 } 8 9 void main()

深入浅出剖析C语言函数指针与回调函数(二)

上一篇博文的地址: http://blog.csdn.net/morixinguan/article/details/65494239 这节,我们来看看函数指针与回调函数在Linux内核中的应用. 从上节我们了解到,函数指针和回调函数在开发者和用户之间的一个例子,那么这节,我将引用Linux内核中文件操作结构体来详细的说明. 我们首先来看到这个结构体,这段代码位于linux内核的include/linux/fs.h中,由于代码众多,我只截取几个最基本的例子: File_operations文件操

深入理解C语言函数指针(转)

本文转自:http://www.cnblogs.com/windlaughing/archive/2013/04/10/3012012.html 示例1: void myFun(int x); //声明也可写成:void myFun( int ); int main() { myFun(100);//一般的函数调用 return 0; } void myFun(int x) { printf("myFun: %d\n",x); } 我们一开始只是从功能上或者说从数学意义上理解myFun

C语言 函数指针定义三种方式

//函数指针 #include<stdio.h> #include<stdlib.h> #include<string.h> //函数指针类型跟数组类型非常相似 //函数名就是函数的地址,函数的指针,对函数名进行&取地址操作,还是函数名本身,这是C语言编译器的特殊处理 void test(int a){ printf("a=%d\n",a); } void ProtectA(){ //定义函数类型 typedef void(FunType)(

深入浅出剖析C语言函数指针与回调函数(一)【转】

本文转载自:http://blog.csdn.net/morixinguan/article/details/65494239 关于静态库和动态库的使用和制作方法. http://blog.csdn.NET/morixinguan/article/details/52451612 今天我们要搞明白的一个概念叫回调函数. 什么是回调函数? 百度的权威解释如下: 回调函数就是一个通过函数指针调用的函数.如果你把函数的指针(地址)作为参数传递给另一个函数,当这个指针被用来调用其所指向的函数时,我们就说

C语言 函数指针二(正向调用)

//函数指针做函数参数 #include<stdio.h> #include<stdlib.h> #include<string.h> #include<Windows.h> /* 函数指针做函数参数 实现了2大功能:1.定义了一个指针类型,分配了4个字节大小的内存空间 2.规定了调用函数的参数列表,和返回值 正向调用:通过window自带系统函数库调用dll文件,获取dll文件中的函数地址,执行函数 反向调用:通过函数指针,在另一个函数里调用别的函数 */

C语言----函数指针

回调函数 1. 函数指针 做参数 2. 回调过程 例代码 // // main.m // C_Project_12 // // Created by on 15/3/26. // Copyright (c) 2015年 . All rights reserved. // #import <Foundation/Foundation.h> //课堂练习题:写一函数查找成绩90分以上的学员,使?用回调函数在姓名后加"?高富 帅". //1.定义结构体类型 typedef str