【C语言篇】? 14. 高级指针、判断类型
2018-06-18 04:08:15来源:未知 阅读 ()
高级指针
高级指针:包括双指针(二级指针)、void指针、函数指针。
1. 双指针
双指针(二级指针),是指针的指针。
2. void指针
void指针:万能指针,代表任意类型的指针。
malloc分配堆内存时,由于无法确定内存存储类型,所以可以使用void*代表任意指针类型。
3. 函数指针
- 函数指针是指向函数的指针变量,每个函数都有一个入口地址,指针变量中保存函数的入口地址
- 每一个函数都有一个入口地址,该入口地址就是函数指针所指向的地址。有了指向函数的指针变量后,可用该指针变量调用函数,就如同用指针变量可引用其他类型变量一样。
- 函数指针有两个用途:调用函数和做函数的参数。
函数指针的声明方法为:
返回值类型 (*指针变量名) ([形参列表]);
函数指针(指向函数的指针)的定义格式:
函数也会占用一块存储空间,因为函数也会占用一块存储空间所以函数也有自己的地址
函数的地址保存在函数名中,函数名就是函数的地址 == 数组名就是数组的地址
数组名就是指向数组第一个元素的常量指针,函数名也是指向函数第一条指令的常量指针。
函数指针的语法格式:
函数指针的优缺点:
- 优点:是对于通用函数中要涉用到另一个函数,但函数名称未定,是让用户编的,此时需要使用函数指针。
如,通用定积分计算,被计算函数是待定的,是由调用者确定的函数
如,通用排序函数也是,比较函数与交换函数也是让用户自己编的
- 缺点:是由于函数指针指向的函数未定,容易导致程序崩溃。
判断类型
怎么判断类型:从右往左边看,没有括号就看最右边是什么类型就是什么类型;有括号,括号里是什么类型就是什么类型。
- int *a[10] 指针数组
- []的优先级比*高,a代表一个数组,其数组元素存储的类型是int *;
- a的值代表数组首元素a[0]的地址值,是一个指针,即*a=a[0],只是需要注意的是这个指针类型为const,即不能改变的。
- int (*a)[10] 数组指针
- a代表一个数组指针,它指向一个int [5]型的数组;因为a的类型,所以a++后,它会偏移sizeof(int)*5 个字节。
-
(int)有参数就是函数
-
int (*a)(int) 函数指针
-
int *a (int) 指针函数
-
函数和方法的区别:函数是大家的,没有类。方法是类的,不是所有人都能用。
标签:
版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有
上一篇:3038 3n+1问题
下一篇:09:密码翻译
- 关于各种不同开发语言之间数据加密方法(DES,RSA等)的互通的 2020-06-07
- C语言程序结构 2020-05-31
- 每日干货丨C++语言主流开发工具推荐! 2020-04-28
- C语言实现经典游戏——扫雷! 2020-04-17
- C语言中的宏定义 2020-04-04
IDC资讯: 主机资讯 注册资讯 托管资讯 vps资讯 网站建设
网站运营: 建站经验 策划盈利 搜索优化 网站推广 免费资源
网络编程: Asp.Net编程 Asp编程 Php编程 Xml编程 Access Mssql Mysql 其它
服务器技术: Web服务器 Ftp服务器 Mail服务器 Dns服务器 安全防护
软件技巧: 其它软件 Word Excel Powerpoint Ghost Vista QQ空间 QQ FlashGet 迅雷
网页制作: FrontPages Dreamweaver Javascript css photoshop fireworks Flash