数组和指针

来源:互联网 发布:知乎 paranoid android 编辑:程序博客网 时间:2024/05/19 09:01

    数组的标识符就是一个特殊的指针(感觉上像是一个常量指针),在声明数组的时候就分配了物理存储空间,所以不能在引用其他数据的物理地址;而同类型的指针则完全可以替代一个数组来使用。由于以前不怎么写代码所以理解不深刻,下面是一个示例来说明这个问题:

 

#include <iostream>
using namespace std;

void main(){
 int Array[3] = {1,2,3};
 int* pArray = Array+1;//数组的标识符其实是一个指针
 cout<<Array[1]<<endl;
 cout<<*pArray<<endl;
 cout<<pArray[0]<<endl;//对于每一个指针都可以看做是一个数组的首地址,这个地址下标就是这个数组的第0个


 int a = 2;
 int* pInt = &a;
 //Array = pInt;//报错说明数组标识符相当于一个常量指针,在声明时已经分配好物理空间,不能引用其他的地址

 cout<<pInt[0]<<endl;//只要有地址(即指针)就可以当做数组来用,拿到一个指针(物理地址),就可以
 cout<<pInt[1]<<endl;//根据这个地址取得和地址已知的地址里的内容。第一种方法:使用指针++;
 cout<<*(pInt+1)<<endl;//第二种方法:把此指针当做数组的首地址,使用数组下标来选择其他空间的元素
}

 

    会发现Array[1]和*pArray和pArray[0]是完全相同的;

    pInt完全可以当做数组首地址来使用。

原创粉丝点击