| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> C++知识库 -> 指针1(C语言) -> 正文阅读 |
|
[C++知识库]指针1(C语言) |
目录 1.指针是什么指针就是地址,口语中说的指针通常指的是指针变量。 指针变量,用来存放地址的变量。(存放在指针中的值都被当成地址处理)。 内存
指针变量是用来存放地址的,地址是唯一标示一个内存单元的。 指针的大小在32位平台是4个字节,在64位平台是8个字节、
2. 指针和指针类型类型
指针的定义方式是: type + * 。 其实: char* 类型的指针是为了存放 char 类型变量的地址。 short* 类型的指针是为了存放 short 类型变量的地址。 int* 类型的指针是为了存放 int 类型变量的地址。 2.1 指针+-整数printf("%p\n", &n); ? ? ?//001EFD4C? ?n的地址
指针的类型决定了指针向前或者向后走一步有多大 2.2 指针的解引用
*pc = 0; ? //char 型解引用1个字节 指针的类型决定了,对指针解引用的时候有多大的权限(能操作几个字节)。 3. 野指针
3.1 野指针成因1. 指针未初始化局部变量指针未初始化,默认为随机值
2. 指针越界访问当指针指向的范围超出数组arr的范围时,p就是野指针
3. 指针指向的空间释放3.2 如何规避野指针1. 指针初始化2. 小心指针越界3. 指针指向空间释放,及时置NULL4. 避免返回局部变量的地址5. 指针使用之前检查有效性
4. 指针运算4.1 指针+-整数
*vp++ = 0; *vp++, ++优先级高于*, 因为是后置++,先赋值,后加 , 所以解引用是*=0, 指针指向下一个内存 (*vp)++ ,先对*p解引用操作,值++ 4.2 指针-指针
两个指针相减的前提是:指针指向的同一块连续的空间
指针和指针相减,绝对值为指针之间的个数 4.3 指针的关系运算允许指向数组元素的指针与指向数组最后一个元素后面的那个内存位置的指针比较,但是不允许与 指向第一个元素之前的那个内存位置的指针进行比较。
化简后
5. 指针和数组数组名表示的是数组首元素的地址
p存放的是数组首元素的地址
既然可以把数组名当成地址存放到一个指针中,我们使用指针来访问一个就成为可能。
所以 p+i 其实计算的是数组 arr 下标为i的地址。 那我们就可以直接通过指针来访问数组。
6. 二级指针*ppa 通过对ppa中的地址进行解引用,这样找到的是 pa , *ppa 其实访问的就是 pa .
**ppa 先通过 *ppa 找到 pa ,然后对 pa 进行解引用操作: *pa ,那找到的是 a .
7. 指针数组指针数组是指针还是数组? 答案:是数组。是存放指针的数组。 |
|
C++知识库 最新文章 |
【C++】友元、嵌套类、异常、RTTI、类型转换 |
通讯录的思路与实现(C语言) |
C++PrimerPlus 第七章 函数-C++的编程模块( |
Problem C: 算法9-9~9-12:平衡二叉树的基本 |
MSVC C++ UTF-8编程 |
C++进阶 多态原理 |
简单string类c++实现 |
我的年度总结 |
【C语言】以深厚地基筑伟岸高楼-基础篇(六 |
c语言常见错误合集 |
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2025年1日历 | -2025/1/11 12:34:02- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |