Chinaunix首页 | 论坛 | 博客
  • 博客访问: 80308
  • 博文数量: 14
  • 博客积分: 1972
  • 博客等级: 上尉
  • 技术积分: 140
  • 用 户 组: 普通用户
  • 注册时间: 2009-05-25 13:04
文章分类

全部博文(14)

文章存档

2012年(3)

2011年(8)

2010年(3)

分类: C/C++

2011-05-26 21:37:03

  1. #include <stdio.h>
  2. #define SIZE 12

  3. int main(int argc, char *argv[])
  4. {

  5.    int a[SIZE]={1,2,3,4,5,6};
  6.    int *ptr1=NULL;
  7.    int *ptr2=NULL;

  8.    //查看数组a的首地址
  9.    printf("&a=%p\n",a);

  10.    ptr1=(int*)(&a+1);
  11.    //分别打印 &a[SIZE] a[SIZE-1](ptr1向后退一个存储单元,即为&a[SIZE-1])
  12.    //SIZE*sizeof(int)=48=0x00000030
  13.    //0x0011FF44+0x00000030=0x0011FF74
  14.    printf("ptr1=%p *(ptr1-1)=%d\n", ptr1, *(ptr1-1));

  15.    ptr2=(int*)(a+1);
  16.    //分别打印 &a[1] a[0]
  17.    printf("ptr2=%p *(ptr2-1)=%d\n", ptr2, *(ptr2-1));

  18.    return 0;
  19. }

运行结果:
阅读(1201) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~