概述
指针小结
-
指针就是地址
-
指针变量是保存地址的变量
-
变量指针其实是变量的地址
-
指针和数组没关系
-
指针的类型应该被分成两部分:type + *
-
一级指针加减1与类型有关,所指向的原地址加减类型对应的字节数;
二级及以上指针加减1时,该指针所指向的原地址加减4 -
两相同类型的指针相加减代表两指针之间所指向元素的个数;两指针相
加减的前提是指向同一类型或同一存储空间 -
对指针解引用代表指针所指向的对象
-
指针与数组使用方法相似,两者即可融合又可分离
-
数组传参第一维可省略,降维为指向内部数组元素的指针
-
传值拷贝和传址拷贝都要实例化在调用的函数开辟的栈上保存。
-
指针数组和数组指针,看 * 与 [ ] 的结合性,* 的优先级低于 [ ] ,所以
数组指针: int( * p ) [ ] ; 指针数组: int* p [ ]
变量名先和谁结合最终类型就是谁。
——布鲁斯@蛋哥
-
“函数名"和”&函数名"意义一样,为函数的入口地址
-
void(* p) ( ) : 函数指针 ;
void* p() : 返回类型为void *的函数
void( * ( *p [10] ) : 函数指针数组
void( * ( *p ) [10] ) :函数指针数组的指针
void( * ( *p [10] ) [10] ) : 函数指针数组的指针数组 -
两段有趣的代码:
((void ()( ) ) 0) ( )
代码一:将0强制类型转换为void( * )函数指针,然后对其解引用后调用
void (*signal (int, void ( *)( int ) ) ) ( int )
代码二:函数名为signal,参数为int和void ( *) ( int )返回类型为void ( *) ( int )的函数
其中,代码二可简化为
typedef void(*pfun_t)(int);
pfun_t signal (int,pfun_t);
- 函数指针数组的用途:转移表,通过对指针数组元素解引用对相应函数进行调用
- 回调函数:回调函数就是一个通过指针数组调用的函数。当你把函数的指针(地
址)作为参数址)作为参数传递给另一个函数传递给另一个函数,当这个指针被
用来调用其所指向的函数时,我们就说这是回调函数。
最后
以上就是多情唇彩为你收集整理的指针小结的全部内容,希望文章能够帮你解决指针小结所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复