数组和指针

本文通过实例对比数组标识符和指针的特性,解释数组标识符为何不能重新指向其他地址,而指针可以灵活地指向不同内存地址。同时介绍了如何使用指针进行数组元素的访问。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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

 

#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完全可以当做数组首地址来使用。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值