让人头疼的指针
2021/10/24 23:13:29
本文主要是介绍让人头疼的指针,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
让人头疼的指针
- 指针在内存中的样子
- int *p = NULL 与 *p = NULL的区别
- 向指定的地址写入数值
- 指针的运算 *(P+1)和 *p+1
学习C语言的同学,不可避免是要接触指针的。个人觉得,搞定指针,基本上算是半步精通了哈哈哈。但是很多同学基本上都在这个地方放弃了。当然,指针这把强大的宝剑,得用点心,因为一旦出错了,可能会导致整个工程都出现问题。
指针在内存中的样子
我们定义一个
int *p;
p是一个变量,这个变量的类型是指针类型,作用就是指向一个地址,这块地址所储存的数据类型是int型。可以变相的理解为,指针=地址。
借鉴一下在一本书里面的图:
注意:指针的大小取决于系统位数,比如系统32位,那么指针的大小就为4 byte。不管是int */char */float *…
int *p = NULL 与 *p = NULL的区别
首先来看第一个:int * p = NULL;
这里的意思是定义一个指针p,其指向的内存里面保存的数据类型是int型,在定义这个p的时候把p的值设为0x00000000。注意,不是把*p设置成0x00000000。
再来看第二个:
int *p;
*p = NULL;
第一行代码只是定义了一个指针变量p,也是保存int类型数据,但是p本身的值是多少就不知道,可能是个非法地址。那么我们对这个地址进行赋值为NULL的时候,编译器可能会报错。
向指定的地址写入数值
比如我们需要向0x1234ff写入一个数值10,我们可以直接通过指针来搞定。
int * p = (int *)0x1234ff;
*p = 10;
so easy ~ ~
指针的运算 *(P+1)和 *p+1
*(p+1),它的意思是先偏移一个单位,再去引用内存;
*p+1 ,它的意思是先引用内存 *p,获取到数值之后,在进行+1操作。
要注意的是,对于第一种偏移单位运算,单位的大小由指针的类型所决定,如果是int类型就以int位基数去偏移。
两个指针不能相加,但是两个指针可以相减(必须为同类型指针),指针相减的时候,表明两个内存相差多少个单位(单位由类型决定)
推荐一本好看的C语言书籍 《C语言深度解剖》,也是最近在看的书,里面讲的C语言会比较深入一点,我的许多内容都从书中借鉴而来,也是变相地给自己做个阅读总结。
这篇关于让人头疼的指针的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-12-27OpenFeign服务间调用学习入门
- 2024-12-27OpenFeign服务间调用学习入门
- 2024-12-27OpenFeign学习入门:轻松掌握微服务通信
- 2024-12-27OpenFeign学习入门:轻松掌握微服务间的HTTP请求
- 2024-12-27JDK17新特性学习入门:简洁教程带你轻松上手
- 2024-12-27JMeter传递token学习入门教程
- 2024-12-27JMeter压测学习入门指南
- 2024-12-27JWT单点登录学习入门指南
- 2024-12-27JWT单点登录原理学习入门
- 2024-12-27JWT单点登录原理学习入门