【论指针(1)】指针引入
来源:互联网 发布:淘宝上的satya精油好吗 编辑:程序博客网 时间:2024/05/12 11:38
为什么要用指针?
我们知道内村中所有的数据都是有地址的,他们每一个的地址都是唯一,也就成了他们的标志!
当我们定义一个a=5时,在内村中会构成以下数据结构:
编号
a的数据
a
这是对于最普遍的定义,因为这种自定义好处是当我们定义了a=5后,我们不需要知道数据5在内村中的地址即编号,只需要引用符号a即可,其实真正的CPU运算是根据地址来的,包括读数据、运行程序,都是CPU通过地址来获取相关数据的!当我们用上面这种方式定义的时候,CPU在我们引用a时,其实真正的操作是去通过地址找到这个数据5的!只是这种定义好处是我们不需要知道地址!
但是为了数据能普遍性和方便性操作,我们操作地址是最根本的解决方法,于是为此引入指针这个概念,从而能够对内村中的每一字节数据进行操作!
首先指针变量和其他的变量是一样的,也就是当我们定义一个指针变量时,它在内村中构成的数据结构也是跟上面的一样的,重点在于我们在表示的方法上不一样,
比如定义一个指针变量int *p,注意了,这里的指针变量是p,而不是*p,既然p是个变量,那跟其他变量一样,指针变量p的数据结构跟上面的一样:
编号
P的数据
P
所以当我们引用p时,其实只是拿出了p的数据,但这里加了要求,这个p的数据必须是其他数据的地址,由此p=其他变量的地址;而*这个操作就是取出这个地址所对应的数据;所以以后我们只要知道某个数据的地址,把他赋给一个指针变量,再通过*操作,就能知道该地址中的数据,这对于内村中数据的操作可是一劳永逸啊!
C语言是允许使用变量的地址的:
如 float x 变量x的地址----&x
int a[10] 数组变量的首地址---变量名a
所以我们注意几点:
当我们定义了一个指针变量int *p;
1. 指针变量是p,而不是*p
2. p的数据是地址,所以赋值给p的数据必须是地址
3. *操作是取出对应地址中的数据
根据上面的关系,我们只要知道数据的地址,然后把地址赋值给指针变量p,再利用*操作,就能操作任何内村中的数据了!这就是为什么我们要引入指针这个概念!
- 【论指针(1)】指针引入
- 指针的引入
- 4.2 指针的引入
- 项目引入缓存报错空指针
- Android Studio 引入com.jakewharton:butterknife:8.8.1后报空指针
- 第四章 数组和指针 (part2) 引入指针
- 补记:引入NullPtr处理空指针
- 引入派生类后的对象指针
- C++11引入智能指针std::unique_ptr
- 智能指针(一)之引入
- jsp下引入绝对路径报空指针
- 指针
- 指针
- 指针
- 指针
- 指针
- 指针
- 指针
- ubuntu安装matlab
- 完全卸载VS2015
- Canny边缘检测原理与C++实现(2)实现部分
- springboot(十四):springboot整合shiro-登录认证和权限管理
- Pycharm中如何加载多个项目?
- 【论指针(1)】指针引入
- MATLAB PLOT 坐标轴反转
- 关于django的render函数的参数问题
- git log命令详解
- Eclipse下如何统一修改某一类型文件的编码格式
- rsync常见问题及解决办法(亲测)
- 挑战程序竞赛系列(21):3.2反转
- Tensorflow学习笔记之用TF读取csv文件的限制
- MySQL----------6.27