变量与指针

2019-11-28  本文已影响0人  arthur_wang_73
  1. 变量的值是在计算机内存中存储的,同时存储变量的内存是有地址的。
  2. 既然这个地址存在,那么就可以用取址运算符“&”来获取
  3. 这个地址是有可能并且有必要被记录下来的。即将地址值记录在内存中。这个值是可以用于相关的操作。
  4. 存储下来的地址的数据类型是指针类型。一般习惯用的标识符是p即英语pointer的首字母。
  5. 定义的方法是int *p,是指向int类型数据的地址。char *p是指向字符变量的执政。
  6. 与指针相关的操作:
    对于p=&i; 的关系:

&i:是取得i所在的内存地址
*p:是取得p变量里内容(即内存地址)上的值,即p所指向的变量的值。

&p: 也是有意义的操作。

由于p本身也是变量,因此&p可获得指针型变量的所在的内存地址。就是说i的地址储存在&p这个内存地址上。

&* p : 也是系统接受的运算。

解释一下,* p就是i, &*p等同于&i,因此& * p和p是相同的。

运算* &p:也是系统接受的运算。

&p是指p的指针。* &p取得p的指针所指内存的内容,因此*&p就是p。就是i变量在内存中的位置。

总结: * 完成内容的指向功能. & 完成取出内存地址功能。

由于指针也是数据,因此 指针也可以进行计算,相关有意义的运算是C语言所接受的。
指针可以进行++和--的操作。
对于加法可以加上数字,不能指针互相加。
对于减法可以减去数字,也可以指针互相减。

八卦

命令 * p++;在历史上对应于计算机芯片中的一条硬件指令。因此在执行效率上非常高。
加减操作对于相同数据类型的连续内存空间是有意义的。 对于数组和字符串操作特别有效率。

上一篇 下一篇

猜你喜欢

热点阅读