LINUXQQ狂人时代

Main menu:

Archive for 5月, 2009

C 指针和数组地址笔记

#include<stdio.h>
 int main()
    {
      int a[5]={1,2,3,4,5];
      int *ptr=(int *)(&a+1)
      printf(”%d,%d\n”,*(a+1),*(prt-1);
}
~
一定很绕吧,我也糊涂了 琢磨了一早上

C语言里面规定a是数组的首地址是代表整个数组 但&a+1不等价于&a[0]+1, &a是首地址 &a+1就是取a 的地址在加1直接指向下一个内存区域  也就是指向到了ptr[0]的地址是地址上面    然后在把&a+1 的地址复制给ptr指针 这时候ptr变指向了a[5] ,ptr-1=a[4]          最后结果2,5