简述static关键字、void与void *(void指针)、函数指针

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.函数指针的组成部分包括:函数形参的有序列表,函数返回值类型。

posted @   滴水微澜  阅读(3534)  评论(0编辑  收藏  举报
编辑推荐:
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
· 没有源码,如何修改代码逻辑?
· 一个奇形怪状的面试题:Bean中的CHM要不要加volatile?
阅读排行:
· 分享4款.NET开源、免费、实用的商城系统
· Obsidian + DeepSeek:免费 AI 助力你的知识管理,让你的笔记飞起来!
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
历史上的今天:
2016-10-18 深拷贝
点击右上角即可分享
微信分享提示