指针与数组
void main()
{
int a[5]={1,2,3,4,5};
int *ptr1=(int*)(&a+1);
int *ptr2=(int*)((int)a+1);
int *ptr3=(int*)(a+1);
int *ptr4=a;
//假设数组a的开始地址为0x1000 0000
int tmp=*(ptr1-1); // tmp=5
tmp=*ptr2; // tmp=0x1000 0001
tmp=*ptr3; // tmp=2
tmp=ptr4[1]; // tmp=2
}
解释:
1. 数组名表示数组首元素首地址;
2. 指向同一数组的元素可以的操作有:减、等于、赋值;加、乘、除对指针无意义。