//满意么?
#include
using namespace std;
int main()
{
int ab[10] = {1,2,3,4,5,6,7,8,9,0};
int *p_ab = ab;
for(int i = 0; i < 10; i++) //数组名下标法
cout<
cout<< p_ab[i];
cout<
cout<< *(ab+ i);
cout<
cout<< *(p_ab + i);
cout<
}
楼上有具体例子;
我来说一下该问题的本质;
首先,楼主要知道:指针就是地址;地址就是指针;
其次,数组名是该数组的首地址;毫无疑问,它也是个指针;而且相当于是个指针常量(即永远指向该数组,不可对它赋值);
所以,用数组名和用指针访问数组本质是一样的;
最后,也是最关键的楼主只要知道以下知识点,可以秒杀一切该类问题:
当我们用一个数组名+数字来访问某一块内存中的数据时,如:a[ 2 ];
编译器是这样编译的:a[ 2 ] == *( a+2 );
那么,楼主,你说这两种访问数组的方式本质上是不是一样的呢?
int a[10] = {0};
int *p = a;
a[0] = 1;
*p = 2; //a[0] = 2
*(p + 1) = 3; //a[1] = 3
这个书上有的。。。