指针数组:首先它是一个数组,数组的元素都是指针,数组占多少个字节由数组本身的大小决定,每一个元素都是一个指针,在32 位系统下任何类型的指针永远是占4 个字节。它是“储存指针的数组”的简称。数组指针:首先它是一个指针,它指向一个数组。在32 位系统下任何类型的指针永远是占4 个字节,至于它指向的数组占多少字节,不知道,具体要看数组大小。它是“指向数组的指针”的简称。一个小栗子:
int arr[] ={1,2,3,4,5};int *ptr =(int *)(&arr+1); //2 5int *ptr =(int *)(arr+1); //2 1cout<<*(arr+1)<<" "<<*(ptr-1)<<endl;//数组名arr可以作为数组的首地址,而&a是数组的指针。//arr和&arr指向的是同一块地址,但他们+1后的效果不同,arr+1是一个元素的内存大小(增加4)//而&arr+1增加的是整个数组的内存1234567数组指针(行指针)
int a[2][3] = {{1,2,3},{4,5,6}};int (*p)[3];p = a;p++;cout<<**p<<endl; //4 the second rank12345



