LINUXQQ

五月 21, 2009

C 指针和数组地址笔记

Filed under: C语言 — 标签: — admin @ 11:44 上午

#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

评论暂缺 »

还没有任何评论。

这篇文章上的评论的 RSS feed TrackBack URL

留下评论

要发表评论,您必须先登录

Powered by LINUXQQ   ICP 10203065