当前位置: 首页> 健康> 科研 > 函数指针学习

函数指针学习

时间:2025/8/23 8:38:46来源:https://blog.csdn.net/2301_76908811/article/details/141888328 浏览次数:0次

认识函数指针:

函数指针的用处:

回调函数(以函数指针为参数的参数)

定义带标签的结构体

typedef struct mode {

int data;

} Node;

  • 标签(mode: mode 是结构体的标签名。在这种定义中,mode 是结构体类型的名称,但 Node 是通过 typedef 创建的别名。

  • 好处:

    • 标签的存在: 标签 mode 使得你可以在结构体类型的定义中引用自身(对于自引用结构体类型)。如果结构体内部有指向自身的指针时(如链表中的 next 指针),标签是必要的。
    • 自引用: 如果你需要在结构体中使用指向相同类型的指针(例如链表中的 next 和 pre),标签是必须的。

定义不带标签的结构体

 

typedef struct {

int data;// 不能在此处使用指向自身的指针,因为没有标签

} Node;

  • 无标签: 结构体没有指定标签名。在这种情况下,结构体只能通过 Node 类型进行引用。

  • 好处:

    • 简洁: 如果结构体类型不需要在其他地方引用(例如,内部定义结构体),或者结构体类型是临时的且只用于 typedef 生成别名时,可以省略标签。
    • 局部性: 当你不需要在结构体定义中引用自身时(例如,没有自引用的情况),不使用标签可以使定义更加简洁。

总结和应用场景

  1. 带标签的结构体:

    • 当结构体类型需要引用自身时,例如在链表、树等数据结构中。
    • 当你希望结构体在其他地方有额外的引用能力。
  2. 不带标签的结构体:

    • 当结构体类型仅用于定义和别名创建,且不需要自引用或外部引用时。
    • 当定义的结构体非常简单,仅用于某个特定的、局部的目的。

typedef用法:

例子:

关于typedef的别名定义

1、

2、

万能指针充当函数指针:

万能指针:空类型的指针void*p

万能指针能操作如何类型的指针,在使用前要做强制类型转换

指针的两个类型:1、指针的类型(变量的类型): (取代掉变量名就行了)

                             2、指针所指向的类型 指针要操作的数据:  (去掉变量名和*)

例:

const的使用:

1、*前的const写前写后没区别

所以 const  int x=1;和int const x=1;是等效的

作用是修饰数据类型,它是修饰指针所指向的数据的类型

所以const  int *x的 *x不能变

2、int const* x修饰的是指针变量,不能修改指针变量的指向(相当于x不能变)

就这两种情况,上述的四个示例都可以由这两种组合

数组指针和指针数组:

哪个在后面,他就是什么

整形数组:------->数组       拥有多个变量名有规律的整形变量

数组指针:------->指针                                                            :一般是用来操作二维或者多维数组

指针数组:------->数组       拥有多个指针名有规律的指针变量 组的  :一般是用来表示字符串的

关键字:函数指针学习

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

责任编辑: