当前位置: 首页 > web >正文

C语言指针

%p以十六进制打印指针变量的值

指针的类型决定

1.解引用可以操作几个字节    2.加1减1可以跨越几个字节.

void*指针可以⽤来接受任意类型地址。但是也有局限性, void* 类型的指针不能直接进
⾏指针的+-整数和解引⽤的运算。
const如果放在*的左边,const *,修饰的是指针指向的内容,保证指针指向的内容不能通过指针来改变。 但是指针变量本⾝的内容可变。
const如果放在*的右边,* const ,修饰的是指针变量本⾝,保证了指针变量的内容不能修改,但是指针指 向的内容,可以通过指针改变。
指针运算
1.指针加减整数:指针会指向新的地址,这个新地址通常对应于原来地址基础上增加或减少指定的字节数,这取决于所使用的数据类型(比如int、char等)的大小。

2.指针减指针

指针减指针的绝对值是指针与指针之间的元素个数

野指针

1.访问未开辟的空间

2.访问已释放的空间

assert()

assert()是一个宏,如果条件不满足就终止程序,如果满足就接着往下执行

可以在#include<assert.h>前加 #define  NDEBUG来关闭assert()

对数组名的理解

1.数组名就是数组⾸元素的地址,类型Type *
2. sizeof(数组名) ,这⾥的数组名表⽰整个数组,这个数组名可以是直接有的,也可以是变换得来的
3. &数组名 ,表示的是整个数组的地址,是一个数组指针,类型Type (*) [N]

数组访问元素的原理

arr[N]会被编译器替换成 *(arr+N),也就是根据起始地址和偏移量得到元素地址,然后解引用得到元素,基于这个原理实际上也可以写成 N[arr],很有趣~

数组传参

数组传参形参可以写成指针的形式,也可以写成数组的形式,写成数组的形式底层其实还是指针

1.一维数组

Type [  ]         or              Type*

2.  二维数组

Type [  ][N]     or              Type (*) [N]

数组形式底层还是指针,所以必须指明列数

函数指针

Type (*)(type,type...)

函数指针数组

Type (* arr [N] )(type,type...)

回调函数

把函数作为参数传递给另⼀个函数,在特定条件时调用,这就是回调函数。
void qsort (void* base, size_t num, size_t size,int (*compar)(const void*,const void*));

qsort就是用的回调函数cmpar

return valuemeaning
<0The element pointed to by p1 goes before the element pointed to by p2
0The element pointed to by p1 is equivalent to the element pointed to by p2
>0The element pointed to by p1 goes after the element pointed to by p2

大于0交换,小于等于0不交换

和c++的sort不一样,c++是回调函数返回false交换,返回true不交换

http://www.xdnf.cn/news/2751.html

相关文章:

  • 2015, JLink,下载安装步骤
  • AI技术落地实战指南:从核心突破到产业赋能
  • iPhone闹钟无法识别调休致用户迟到,苹果客服称会记录反馈
  • Boost 库安装 (windows 11)
  • 【LLM模型开发】WordPiece算法
  • QT6 源(58)篇一:阅读与注释 QString 这个类,先给出其应用举例
  • OpenCV VC编译版本
  • iView Table 组件跨页选择功能实现文档
  • 4月28日日记
  • Mars3d加载矢量数据控制台提示addGraphic:数据id存在冲突,已重新赋值id
  • Rust 学习笔记:编程练习(一)
  • 火语言RPA--腾讯云存储
  • TP5兼容达梦国产数据库
  • 深度学习篇---抽样
  • 路径积分粗糙度
  • 微信聊天机器人搭建 教程/开发
  • 《计算机视觉度量:从特征描述到深度学习》—图片多模态CLIP,BLIP2,DINOv2特征提取综述
  • CUDA编程 - 测量每个block内线程块的执行时间 - 如何应用到自己的项目中 - clock()
  • 利用 Google Earth Engine 探索江宁区 2010 - 2020 年 EVI 时空变化
  • 51c大模型~合集122
  • 【人工智能】边缘智能的突破:Ollama模型压缩技术与DeepSeek部署实践
  • 锁和事务谁在外层
  • 西门子PLC结构化编程_水处理系统水泵多备多投
  • Linux中的shell脚本练习
  • 在线图书管理系统的结构化需求分析过程讲解
  • 【Git】项目多个分支开发、维护与优化处理 -- 还未实测 记录初
  • PCL实时动态加载显示点云功能以及laslib配置
  • 使用Python在excel里创建柱状图
  • 如何搭建spark yarn 模式的集群集群
  • uniapp利用生命周期函数实现后台常驻示例