数组名称和指针变量加减后,实际指向的值(转)

来源:互联网 发布:免费发型设计软件下载 编辑:程序博客网 时间:2024/05/18 03:23
 int main(int argc, char ** argv)
 {
  int a[5] = {1, 2, 3, 4, 5};
  int *ptr = (int*)(&a + 1);
  printf("%d, %d", *(a + 1), *(ptr - 1));
  return 0;
 }
 这个程序打印出的结果应该是 2, 5。
 因为在指针移位时,是以sizeof(T)(T是指针指向的类型)。
 所以&a + 1移位时,移了 sizeof(a)个,也就是5 * 4(x86结构)=20个。
 而在后边,ptr的类型为int* 所以,一次向后移4个字节,故结果是5.
原创粉丝点击