static关键字
1.修饰局部变量,延长局部变量的生命周期。
使变量成为静态局部变量,在编译时就为变量分配内存,直到程序退出才释放存储单元。
2.修饰全局变量,限制全局变量的使用范围为本文件中。
全局变量默认为静态全局变量,在编译时就为变量分配内存,直到程序退出才释放存储单元。
3.修饰函数,限制函数的使用范围为本文件中。
使函数成为静态函数,对函数的连接方式产生影响。如果想让内部函数被外界引用,可在函数前添加extern修饰。

void与void *(void指针)
1.void 即‘无类型’,void * 即‘无类型指针’,可以指向任何数据类型。
例如:
int * print;
void * pvoid;
pvoid = print;

2.void的作用
a.对函数返回的限定,例如:
void func (int ,int)
b.对函数参数的限定,例如:
int func(void)

3.void *的作用
a.作为形参,在函数中传递,表示任意类型,例如:
void * func (void *para1,void *para2)

函数指针
a.函数指针是什么?
一个函数占用一段连续的内存地址,当调用一个函数时,实际上是跳转到函数的入口地址,执行函数体代码,然后返回。
函数的入口地址怎么确定呢,它是由函数名标记的,实际是函数名就是函数的入口地址。
函数指针是一种特殊的指针,它指向函数的入口。

b.如何定义一个函数指针变量?
定义两个函数
int func1(int arg1,char arg2)
int func2(char arg2)
定义两个函数指针变量
int (* pfunc1) (int,char) = func1
int (* pfunc2) (char) = func2
只有相同的函数指针类型才可以赋值。

c.如何区别两个函数
函数指针类型是由函数签名决定的,函数签名是函数的身份证,不同类型函数的函数签名是不一样的。
同理,具有相同函数签名的两个函数是同一个函数。
函数签名的组成部分包括:函数名,函数形参的有序列表,函数返回值类型。

d.函数指针的组成部分包括:函数形参的有序列表,函数返回值类型。

简述static关键字、void与void *(void指针)、函数指针的更多相关文章

  1. C基础知识(6):指针--函数指针与回调涵数

    函数指针 函数指针是指向函数的指针变量. 通常我们说的指针变量是指向一个整型.字符型或数组等变量,而函数指针是指向函数. 函数指针可以像一般函数一样,用于调用函数.传递参数. #include < ...

  2. 实习第一个月总结(const关键字、条件编译、volatile关键字、#和##的作用、函数指针)

    C语言中const关键字的作用: 修饰局部变量或者全局变量,表示变量n的值不能被改变了 修饰指针,分为常量指针与指针常量,也可以两者结合 常量指针指向的值不能改变,但是这并不是意味着指针本身不能改变, ...

  3. C语言结构体及typedef关键字定义结构体别名和函数指针的应用

    结构体(struct)的初始化 struct autonlist { char *symbol; struct nlist nl[2]; struct autonlist *left, *right; ...

  4. C/C++ 一段代码区分数组指针|指针数组|函数指针|函数指针数组

    #include<stdio.h> #include<stdlib.h> #include<windows.h> /* 举列子说明什么是函数指针 */ //以一个加 ...

  5. 指向函数的指针 ------ 函数指针(function pointer)

    函数指针: 指向函数的指针, 首先是一个指针, 这个指针指向一个函数. 函数具有可赋值给指针的物理内存地址,一个函数的函数名就是一个指针,它指向函数的代码.一个函数的地址是该函数的进入点,也是调用函数 ...

  6. C 函数指针 函数指针数组 转移表

    内容来自<c和指针>,整理后方便个人理解 高级声明 cdel程序可以方便的给出声明的释义 指向函数的指针 int ( *f ) ( int n_values, float amount ) ...

  7. C++基础——函数指针 函数指针数组

    ==================================声明================================== 本文版权归作者所有. 本文原创,转载必须在正文中显要地注明 ...

  8. C语言指针系列 - 一级指针.一维数组,二级指针,二维数组,指针数组,数组指针,函数指针,指针函数

    1. 数组名 C语言中的数组名是一个特殊的存在, 从本质上来讲, 数组名是一个地址, 我们可以打印一个指针的值,和打印一个数组的值来观察出这个本质: int nArray[10] ={ 0 }; in ...

  9. STL函数static void (* set_malloc_handler(void (*f)()))()与函数指针解析

    在C++ STL的SGI实现版本中,一级空间配置器class __malloc_alloc_template中有一个静态函数的实现如下: static void (*set_malloc_handle ...

随机推荐

  1. 团队作业8——第二次项目冲刺(Beta阶段)第三天

    BETA阶段冲刺第三天 1.当天站立式会议 2.每个人的工作 (1)昨天已完成的工作: 编写页面讨论 (2)今天计划完成的工作: 完成编写页面 (3)工作中遇到的困难: 验证码正确度 (4)每个人的贡 ...

  2. 【Alpha】——Fifth Scrum Meeting

    一.今日站立式会议照片 二.每个人的工作 成员 昨天已完成的工作 今天计划完成的工作 李永豪 测试统计功能 对统计出现的问题进一步完善 郑靖涛 着手编写报表设计 继续报表设计 杨海亮 协助编写统计功能 ...

  3. 201521123033《Java程序设计》第5周学习总结

    1. 本周学习总结 1.1 尝试使用思维导图总结有关多态与接口的知识点. 参考资料: 百度脑图 XMind 2. 书面作业 作业参考文件下载 1.代码阅读:Child压缩包内源代码 1.1 com.p ...

  4. 201521123062《Java程序设计》第11周学习总结

    1. 本周学习总结 1.1 以你喜欢的方式(思维导图或其他)归纳总结多线程相关内容. 2. 书面作业 1.互斥访问与同步访问 完成题集4-4(互斥访问)与4-5(同步访问) 1.1 除了使用synch ...

  5. Oracle数据泵的导入导出

    说明:数据泵技术是Oracle Database 10g 中的新技术,它比原来导入/导出(imp,exp)技术快15-45倍.速度的提高源于使用了并行技术来读写导出转储文件. expdp导出 1.以s ...

  6. panda库------对数据进行操作---合并,转换,拼接

    >>> frame2 addr age name 0 beijing 12 zhang 1 shanghai 24 li 2 hangzhou 24 cao >>> ...

  7. panda库2

    >>> a=pd.Series([1,2],index=['a','b']) >>> a a 1 b 2 dtype: int64 >>> b=p ...

  8. Http协议基本知识简介

    HTTP协议是指超文本传输协议,位于应用层,HTTP规定数据格式,然后用tcp进行传输. 请求响应模式:简单理解为客户端对服务器发起请求,服务器响应客户端. 主要特点 无连接:无连接的含义是限制每次连 ...

  9. 上传文件复用代码【fileUpload】

    这是使用了FileUpload上传组件的,解决了中文乱码问题了,并且删除了临时文件的. 使用了一个Book对象做示范 private Book uploadData(HttpServletReques ...

  10. ResourceManager的HA

    大家都知道在hadoop2中对HDFS的改进很大,实现了NameNode的HA:也增加了ResourceManager.但是ResourceManager也可以实现HA.你没看错,确实是Resourc ...