我是靠谱客的博主 多情唇彩,最近开发中收集的这篇文章主要介绍指针小结,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

指针小结

  1. 指针就是地址

  2. 指针变量是保存地址的变量

  3. 变量指针其实是变量的地址

  4. 指针和数组没关系

  5. 指针的类型应该被分成两部分:type + *

  6. 一级指针加减1与类型有关,所指向的原地址加减类型对应的字节数;
    二级及以上指针加减1时,该指针所指向的原地址加减4

  7. 两相同类型的指针相加减代表两指针之间所指向元素的个数;两指针相
    加减的前提是指向同一类型或同一存储空间

  8. 对指针解引用代表指针所指向的对象

  9. 指针与数组使用方法相似,两者即可融合又可分离

  10. 数组传参第一维可省略,降维为指向内部数组元素的指针

  11. 传值拷贝和传址拷贝都要实例化在调用的函数开辟的栈上保存。

  12. 指针数组和数组指针,看 * 与 [ ] 的结合性,* 的优先级低于 [ ] ,所以
    数组指针: int( * p ) [ ] ; 指针数组: int* p [ ]

变量名先和谁结合最终类型就是谁。
——布鲁斯@蛋哥

  1. “函数名"和”&函数名"意义一样,为函数的入口地址

  2. void(* p) ( ) : 函数指针 ;
    void* p() : 返回类型为void *的函数
    void( * ( *p [10] ) : 函数指针数组
    void( * ( *p ) [10] ) :函数指针数组的指针
    void( * ( *p [10] ) [10] ) : 函数指针数组的指针数组

  3. 两段有趣的代码:
    ((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);
  1. 函数指针数组的用途:转移表,通过对指针数组元素解引用对相应函数进行调用
  2. 回调函数:回调函数就是一个通过指针数组调用的函数。当你把函数的指针(地
    址)作为参数址)作为参数传递给另一个函数传递给另一个函数,当这个指针被
    用来调用其所指向的函数时,我们就说这是回调函数。

最后

以上就是多情唇彩为你收集整理的指针小结的全部内容,希望文章能够帮你解决指针小结所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(48)

评论列表共有 0 条评论

立即
投稿
返回
顶部