码迷,mamicode.com
首页 > 编程语言 > 详细

数组与指针(四)——指针操作

时间:2015-10-15 22:16:10      阅读:311      评论:0      收藏:0      [点我收藏+]

标签:

// ptr_ops --指针 操作 
#include<stdio.h>
int main(void)
{
   int urn[5] = {100,200,300,400,500};

   int *ptr1,*ptr2,*ptr3;

    ptr1 = urn;       //把第个地址赋给指针
    ptr2 = &urn[2];   //同上

    printf("pointer value ,dereferenced pointer ,pointer address:/n");            //取得指针到值并去取得指针到地址
    printf("ptr1 = %p  ,   *ptr1 = %d,      &ptr = %p  /n  ",     ptr1,      *ptr1,       &ptr1);           //ptr1 = %p ,urn数组首地址,   100  ,指针变量自身的门牌号码,他家里存的是 数组urn 的首地址

 


  ptr3 = ptr1 + 4;                                                              //指针加法
  printf("/nadding an int  to a pointer :/n");
  printf("ptr1 + 4 = %p,    *(ptr1 + 3) = %d  /n ",         ptr1 + 4,       *(ptr1 + 3)    );        // 因为一个地址代表一个字节,一个字节八位,参考博客 32位机器上的图片。 

                                                            // 这里是指 &urn[4]的地址,应该与第一个相差4*4即 16个字节,   *(ptr1+3)=400

 ptr1++;                                                                       //递增指针                    
  printf("/nvalues after ptr1++/n");
 printf("ptr1 = %p  ,   *ptr1 = %d,       &ptr1 = %p   /n",        ptr1,      *ptr1,     &ptr1);         // 数组第二个元素地址 , 200  ,      指针变量自身的门牌号码,他家里存的是 数组urn 的首地址           

 

 


 ptr2--;                                                                       //递减指针                
printf("/n values after --ptr2/n");

 printf("ptr2 = %p,*ptr2 = %d,&ptr2 = %p/n",ptr2,*ptr2,&ptr2);                      // 首元素地址+4 ,       200   ,          ptr2指针变量自身的门牌号码

 


 --ptr1;                                                                       //恢复初始值             

 ++ptr2;                                                                       //恢复初始值

 


  printf("/npointer reset to original values/n");
  printf("ptr1 = %p,ptr2 = %p/n",ptr1,ptr2);

 


printf("/nsubtracting one pointer from another /n");
 printf("ptr2 = %p,ptr1 = %p ,ptr2 - ptr1 = %d/n",ptr2,ptr1,ptr2 - ptr1);      //指针减法   

 
  printf("/nsubtracting an int from a pointer/n");
  printf("ptr3 = %p,ptr3 - 2 = %p/n",ptr3,ptr3 - 2);
return 0;     

}

结果:

技术分享

 

技术分享

仔细看看,就懂了,不是很难的!!!!!

 

数组与指针(四)——指针操作

标签:

原文地址:http://www.cnblogs.com/shengruxiahua/p/4883731.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!