aと&aの違い
[cpp] view plaincopyprint?
4.3.2,a &a
, , :
main()
{
int a[5]={1,2,3,4,5};
int *ptr=(int *)(&a+1);
printf("%d,%d",*(a+1),*(ptr-1));
}
? 。
1 , , 1。 ,
T , sizeof(T) 。 , ,a
, 5 ; ptr int 。
&a + 1: a , sizeof(a) , &a + 5*sizeof(int),
, 。
(int *)(&a+1): , int * , ptr。
*(a+1): a,&a , ,a , a[0]
,&a ,a+1 , a[1] ,&a+1
。 2
*(ptr-1): ptr a[5], ptr int * , *(ptr-1) a[4] ,
5。
, , :
Visual C++6.0 Watch &a+1 (x0012ff6d(0x0012ff6c+1) ?
/*
A , a+1
&a[0] ,
&a a+1
*/
C -----“ ”。 A[10];
, 。 , 。 , :
a ?
, 。
a &a[0] , , 。 。
, , ( , ) , a , 。
a , , ?a !
。 a , , 。 a[i] , a 。 a , , a 。