数组名并不是一个普通的变量,而是一个指向数组首元素的指针。也就是说,我们可以用数组名来初始化一个对应类型的指针。虽然数组名是指针,但它是一个指针常量。也就是说,不带下标的数组名不能作为左值。指针是一种数据类型,所以,我们可以用指针类型来创建一个数组。声明一个指针数组的语句格式是:指针类型 * 数组名[常量表达式];对指针数组的操作和对指针变量的操作并无不同.
要点:理解数组名其实就是一把指针!它指向所有元素的第一个int a[10]; 则它的内存分布:a[0] a[1] a[2] a[3] a[4] a[5] a[6] a[7] a[8] a[9] 数组名 a 就是指向了第一个元素 a[0] 的地址(注意是地址)所以上面的也可表示为: *(a+0) *(a+1) *(a+2) *(a+3) *(a+4) *(a+5) *(a+6) *(a+7) *(a+8) *(a+9)这是一样的!而如果定义一把指针并赋值: int *p; p = a;则p 现在和a都指向了第一个元素a[0]的地址,所以它的用法和a一样如:*(p+0)=p[0]=a[0]=*(a+0) , *(p+1)=p[1]=a[1]=*(a+1)……看领会下就懂了哦~~~