C/C++ 使用指针操作数组

在进行如题操作之前,我们先了解一下指针和数组的本质

指针

指针本身也是一个“变量”,他的值是一个存储单元地址
如下代码,指针 ptr 其实是一个变量,它指向的是 num 的地址。

int num = 1;
int* ptr = #

指针四大特点:
1、指针本身是一个变量,值是一个存储单元的地址。
2、指针的值可以发生改变,也就是说它指向的地址可以更改。
3、多个指针可以指向同一块存储单元。
4、指针必须有类型,如 int 类型。
读完上面这些话,是不是有点明白指针的意义了。

数组

“数组名”本身就是一个指针常量(不理解“指针常量”的同学,可以先学习一下),数组名的值永远不会发生改变,只能是数组第一个元素的地址。
举个例子:int Arr[3] = {1, 2, 3}; 其数组名Arr本身是一个指针常量,它永远指向“1”的存储单元地址。

读完上述内容,很容易就会发现一个共同点:“指针”和“数组名”都是某个元素的存储单元地址。可想而知,两者虽然不同,但在这一点上还是可以互通的。
接下来直接上代码:

int main()
{
	int arr[3] = {1, 2, 3};
	int *pt = arr;
	
	*pt = 11;			// 修改下标0元素
	
	*(++pt) = 12;		// 修改下标1元素
	--pt;				// 切记 ++pt后,pt指向的地址发生了改变,要--pt回到之前的位置

	pt[2] = 13;			// 修改下标2元素

	for(int i=0; i<3; i++)		// 循环1
		cout<<*pt++<<endl;
	
	for(int i=0; i<3; i++)		// 循环2
		cout<<arr[i]<<endl;
	
	delete [] pt;		// 测试之后,释放掉指针
	pt = NULL;
}

执行上述代码,发现“循环1” 和 “循环2” 的结果是相同的,都是11,12,13。我们也实现了题目的要求。那么到此为止,有没有对你有所帮助呢。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值