数组与指针

原创 2015年07月09日 22:43:02

1、指针运算

      合法的指针运算有:指针与整数的加减(包含指针的自增和自减)、同类型的两指针相减、同类型指针间的比较。


【指针与整数的加减】

         指针加上一个整数的结果是另一个指针。因为指针就是地址,所以,指针加上一个整数的结果就是另一个地址。那么,它指向哪里呢?这个指针所指向的类型有关。我们知道,

char       1 byte     8  bit

short      2 byte    16 bit

int          4 byte     32 bit

double   8 byte     64 bit        

        例如:

         int * p;

         p+2;

         这样使得指针的值增加8 byte,也就是2个int的大小。

【同类型的两指针相减】       

        只有当两个指针都指向同一个数组元素时,指针相减才有意义,结果是两个指针在内存中的距离,以数组元素的个数为单位,

以字节为单位。

        例如:

        int  a[10];

        int  * p = a;

        则 (p+2) - (p+4)= -2 

【同类型指针间的比较】

            < 、>、>=、<=运算。前提也是两指针指向同一个数组。


2、指针运算在数组中的应用

【初始化问题】

     int a[] = {0,1,2,3,4,5,6,7,8};

     int *p = a;

     int *p1;

     p1 = &a[4];

     p1 = p+4;

     a[4] = 15;

     *(a+4) = 15;

     *(p+4) = 15;

     p[4] =15;

        数组名表示地址,所以,int *p = a是正确的赋值。

        p1指向了数组中的第5个元素。下标操作符[ ]给数组元素定位,然后使用取地址符&获取地址。当然也可以通过指针的运算p1 = p+4; 来指向数组中

的另一个元素

       a[4]、p[4]、 *(a + 4) 与 * (p + 4) 等价。指针p(a)加4,就是p指向的地址加4,再做*运算后,就表示具体的值了。              

    


版权声明:如果觉得我的文章对您有用,请随意打赏。您的支持将鼓励我继续创作!本文为博主原创文章,转载请注明链接!

C语言数组和指针

  • 2017年08月05日 09:47
  • 2KB
  • 下载

代码戏我千百遍,我待代码如初恋--数组和指针真的不一样啊。

我发现了一个秘密:数组和指针真的不一样啊。 今天,我写了这么个坑爹的代码: array.c   Array.h     Pointer.c ...

数组和指针的区别(通俗易懂)

  • 2011年06月30日 07:19
  • 345KB
  • 下载

C/C++中二维数组和指针关系分析

C++

数组与指针

  • 2017年05月27日 23:22
  • 5.58MB
  • 下载

char型数组转换为Int(指针的规范使用)

最近在写一个读取文件,得到里面存储的事例,进行解压缩然后转换图片进行存盘的工作,文件中存储event的顺序如下: 可以看到数据的长度都存到了m_datasize的这四个字节里,因此如果要读到...

实验5 数组、指针与字符串

  • 2011年12月25日 15:46
  • 27KB
  • 下载
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:数组与指针
举报原因:
原因补充:

(最多只允许输入30个字)