谈论指针(一)
来源:互联网 发布:c51单片机引脚图 编辑:程序博客网 时间:2024/05/17 03:51
(1)指针是什么?
在计算机科学中,指针(Pointer)是编程语言中的一个对象,利用地址,它的值直接指向(points to)存在电脑存储器中另一个地方的值。由于通过地址能找到所需的变量单元,可以说,地址指向该变量单元。因此,将地址形象化的称为“指针”。意思是通过它能找到以它为地址的内存单元。 在高级语言中,指针有效地取代了在低级语言,如汇编语言与机器码,直接使用通用暂存器的地方,但它可能只适用于合法地址之中。指针参考了存储器中某个地址,通过被称为反参考指针的动作,可以取出在那个地址中存储的值。作个比喻,假设将电脑存储器当成一本书,一张内容记录了某个页码加上行号的便利贴,可以被当成是一个指向特定页面的指针;根据便利粘贴面的页码与行号,翻到那个页面,把那个页面的那一行文字读出来,就相当于是对这个指针进行反参考的动作。
(2)指针的第一个小应用
如何从形式上理解指针
(*p)操作是一种运算,返回p值作为地址那个空间的取值
(&p)操作也是一种运算,返回声明p时p的地址
来理解一下第一种的应用(*p)
假设p分配空间时被分配给了3001H和3002H两个位置
int *p;
p=2003H;
*p=3000H;
第一问**p的值为多少
这个问题可以这么看,字母最近原则,先算(*p)也就是*(2003H),然后再算*(*(2003H))然后就得出一个结论*(*(2003H))=*(3000H)等于同一个值
我是这么理解的,本来有这么一个p然后将一个地址值赋给它,*p去到这个地址中找,又找到了一个地址3000H,**p就是到这个地址中再去找值,恩就这样
第二问&&p为多少?
同样的就近法可以得到这么一个等式&(3001H)此时应该报错3001H这个地址怎么会有地址呢?
第三问*(&p)为多少?
*(3001H)=2003H
第四问&(*p)为多少?
&(3000H)=2003H &(3000H)是求3000H这个变量的内存地址,依然是p的值
- 谈论指针(一)
- (一)谈论直男的问题
- 指针(一)
- 指针(一)(基本概念)
- 指针(一)
- 指针(一)
- 指针(一)
- 指针(一)
- 指针(一)
- C++指针(一)
- 指针进阶(一)
- 模拟指针(一)
- 指针基础知识(一)
- 指针学习(一)
- 学习指针(一)
- 指针入门(一)
- 关于指针(一)
- 指针(一)
- Android动画小结
- 正态分布中normpdf和normcdf的区别
- 数据库基础与索引
- OpenGL中常用函数
- net.mindview.util.print.*包不存在的解决方法
- 谈论指针(一)
- sql语句where子句like的用法详解
- java 和C++语法区别
- 理解矩阵乘法
- ubuntu下eth0网卡信息不见了
- 顺序表应用8:最大子段和之动态规划法
- PHP中Redis替代文件存储Session
- spring+hibernate事务管理-save时未执行
- caffe 实战系列:如何写自己的数据层(以Deep Spatial Net为例)