黑马程序员技术交流社区

标题: 指针与一维数组 [打印本页]

作者: chenhuan_ccit    时间: 2014-11-2 19:21
标题: 指针与一维数组
(一)指针变量的运算
1.指针移动
除了两个同类型指针变量之间的相减运算之外,在数组的实际应用中,还会经常用到一个指针变量与一个指针常量相减的运算


除了两                                                   
  如图所示,若有如下定义:
       #define N 10
       int a[N];
       int *p1=&a[1];
       int *p2=&a[3];
       则p1的值为0012FF14H,p2的值为0012FF1CH,p2-p1的结果为(0012FF1CH-0012FF14H)/4=2,表示p1和p2相差2个元素。
2 .同类型指针变量之间的运算

指向同一数组的两个指针变量之间可以进行运算。
(一)两指针变量相减:两指针变量相减之差即是两个指针之间的相对距离(相差数据元素个数)。实际上是两个指针值(地址)相减之差再除以该数组元素的长度(字节数)。

(二)两指针变量进行关系运算:指向同一数组的两指针变量进行关系运算可表示它们所指数组元素之间的关系



(二)一维数组元素的表示法
1.地址法
对于一维数组a,数组名a代表数组在内存中的起始地址,也就是第0号元素的地址,即a=&a[0]; a+i代表元素a的地址,即a+i=&a,a+i所指向的地址的内容就是a,即*(a+i)=a
因此,一维数组a中的元素a用地址法可表示为:
            a=*(a+i)
由于a+i代表a在内存中的地址,所以,在对数组元素a进行操作时,系统内部实际上是按数组的首地址(a的值)加上位移量i找到a在内存中的地址,然后找出该存储单元的内容,即a的值

2.指针法
设a是一维数组,p是一级指针变量。
若p的初值为&a[0],则p指向数组元素a[0],p+i指向数组元素a,因此,*(p+i)就是a,所以,数组元素a可用指针p表示为:
                a=*(p+i)
数组元素a又可用p表示为带下标的形式:
                 a=p   

  
引用一维数组元素的地址
  
  
引用一维数组元素的值
  
  
下标法
  
  
地址法/指针法
  
  
下标法
  
  
地址法/指针法
  
  
&a
  
  
a+i
  
  
a
  
  
*(a+i)
  
  
&p
  
  
p+i
  
  
p
  
  
*(p+i)
  

同类型指针变量之间的相减运算之外,在数组
按时的实际应用中,还会经常用到一个指针


除了两个同类型指针变量之间的相减运算之外,在数组的实际应用中,还会经常用到一个指针变量与一个指针常量相减的运算了两个同类型指针变量之间的相减运算之外,在数组的实际应用中,还会经常用到一个指针变量与一个指针常量相减的运算除了两个同类型指针变量之间的相减运算之外,在数组的实际应用中,还会经常用到一个指针变量与一个指针常量相减的运算变量与一个指针常量相减的运算

QQ截图20141102191301.png (46.97 KB, 下载次数: 9)

QQ截图20141102191301.png

图片1.png (27.53 KB, 下载次数: 10)

图片1.png





欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2