7 指针

作者: ca8519be679b | 来源:发表于2020-10-18 00:00 被阅读0次

指针的作用,可以通过指针间接访问内存。可以用指针变量报错内存地址,用16进制表示

1

如上,我们定义指针变量类型需要和变量的类型一致,要加*,地址为&a即存放a的地址,我们可输出a的地址也就是p指针变量的内容

我们知道p代表地址了,但是如何获得p所对应得值呢,我们可以使用*p解引用,获得这段地址的值或者修改这段内存

2

如下,可以通过修改*p实现修改a

3

指针变量在32位,64位操作系统分别占4,8字节,我64位电脑因为是选择跨平台,所以是相当于32位的4字节,如下

4

空指针NULL

我们定义个指针变量都需要指向一个内存,但是我们没有变量对象时,可以指向0的地址,此时为空指针,空指针不可以解引用访问,因为0-255的内存是系统默认内存,不可以访问,如下

5

野指针

没有去申请,却尝试访问,会报错

6

这段地址并不是我们申请的,却尝试访问,报错

所以空指针和野指针都不要访问

常量指针

常量指针是指针前加上const,这里const并不是代表对应得指针变量指向不能修改,而是指向的值不能修改,如下图,p指向a,a,b都是10,那p可以再指向b,如果p指向a,a修改成20就报错

7

如下,切换相同值得指向可以通过

8

如下,尝试修改p的引用内容提示const

9

虽然不能通过*p修改,但是修改a,可以发现p的引用内容还是可以改的,且没报错

10

指针常量

格式变量类型 * const 指针变量名

指针常量可以修改指向的数据,但是不能修改指向

11

如上,可以修改引用内容

12

如上,是不可以修改指向的

和常量指针的区别在于const的位置,const放在前面表示引用的p内容不可修改(可以但可以通过原变量名改),放在指针变量前表示指向不可改

指针和数组

之前我们使用索引访问数组元素,我们也可以使用指针来访问

13

如上,我们给p指针赋值a即数组地址,按int解析引用就可以打印第一个元素

14

我们遍历所有元素,就可以使用p++实现指针的移动,这里p不是加1,而是实现int类型的单元长度移动,即4个字节

指针和函数

15

我们定义函数,调用时如上,形参修改并没有修改外部的变量

16

我们将地址作为值传给指针型变量,就可以实现变量内容的修改

相关文章

网友评论

      本文标题:7 指针

      本文链接:https://www.haomeiwen.com/subject/ermxmktx.html