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

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

指针

指针本身也是一个“变量”,他的值是另外一个变量的存储单元地址
指针四大特点:
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。我们也实现了题目的要求。那么到此为止,有没有对你有所帮助呢。

你可能感兴趣的:(C/C++)