| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> 数据结构与算法 -> C语言--指针 -> 正文阅读 |
|
[数据结构与算法]C语言--指针 |
目录一、指针是什么在计算机科学中,指针(Pointer)是编程语言中的一个对象,利用地址,它的值直接指向 那么我们可以这么理解 ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?内存:
这是一个4GB大小的内存,可以存放2^32个字节的数据。一个地址对应一个字节的内存空间,地址是连续存储的。 指针也是变量,用来存放地址的变量。(存放在指针中的值都被当成地址处理)。 二、为什么要使用指针 在C语言中,指针的使用非常广泛,因为使用指针往往可以生成更高效、更紧凑的代码。总的来说,使用指针有如下好处: 三、如何申明一个指针1.申明并初始化一个指针我们都知道变量有不同的类型,同样指针也有相对应的类型 当有这样一个代码:
?要将&num(num的地址)保存到p中,我们知道p就是一个指针变量,那我们就要给指针变量相应的类型。
?char* 类型的指针是为了存放 char 类型变量的地址。 那么为什么指针还要划分不同的类型呢?它的作用是什么?
? ?我们通过对比不难发现,不论是整型指针还是字符指针,它指向的地址都是n的地址,但是地址加1之后结果却不一样了,整型指针跳过了四个字节,字符指针跳过了一个字节。 由此,我们可以得出以下结论: 指针的类型决定了指针向前或者向后走一步有多大(距离)。? 2.未初始化和非法的指针(野指针)1.指针未初始化:
2.指针越界
3.指针指向的空间被释放 3.空指针?不指向任何函数和变量的地址,一般在初始化和用完之后使用,NULL的值为0.
四、指针的运算指针+-整数: 指针指向的是地址,所以也可以进行加减运算 指针加减整数不会改变指针自身的地址,只是改变了它所指向的地址。 ?指针-指针: 只有两个指针都指向同一个数组的元素的时候才允许使用。 指针减指针的差的绝对值是两个指针在内存中的距离,结果是以元素个数为单位。 五、指针与数组在C语言中,指针与数组之间的关系十分密切。许多可以用数组来完成的工作都可以用指针来完成。 指针运用起来效率也比数组要高。 1.指针与数组的关系我们先声明一个数组:
我们可以用arr[0],arr[1],......arr[9]来表示这个数组中的10个元素,这10个元素是存储在一段连续相邻的内存区域中的。 接下来,我们再声明一个指针:
p是一个指针变量,指向内存中的一个地址,我们先对它初始化:
?三个地址是相同的。 那我们就可以进行如下操作:
2.指针数组?指针数组是一个数组,是用来存放指针的数组 3.数组指针数组指针是指针,它指向一个数组。
六、指针与结构1.结构体2.结构指针七、指针与函数1.函数指针2.函数指针数组3.指向函数指针数组的指针4.回调函数 |
|
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
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/9 1:09:15- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |