小知识——指针跑到数组外了会怎样

Posted 打喷嚏的蝴蝶

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了小知识——指针跑到数组外了会怎样相关的知识,希望对你有一定的参考价值。

指针跑到数组外了会怎样

当指针指向数组,开启for循环之后,指针不小心跑到数组外了会怎么样?
先说结论:解引用后的元素超出的部分会乱码,但指向的地址跟数组内的地址是连在一起的

之前我在学指针和数组的关系的时候,把指针的位置搞错了,例如下面:

#include<iostream>
using namespace std;
int main()

	//指针和数组
	//利用指针访问数组中的元素
	int arr[10] =  1,2,3,4,5,6,7,8,9,10 ;
	cout << "第一个元素为:" << arr[0] << endl;
	int* p = arr;//arr就是数组的首地址
	cout << "利用指针访问第一个元素:" << *p << endl;
	p++;//让指针向后偏移4个字节
	cout << "利用指针访问第二个元素:" << *p << endl;
	for (int i = 0; i < 10; i++)
	
		//打印数组
		cout << p[i] << endl;
	
	system("pause");
	return 0;

我忘了指针已经指向了数组的第二个元素了,然后打印出来的数组最后面就乱码了

可笑的是,我直到写这文章前还以为地址也乱跑了,甚至还去验证了,然后…

	for (int i = 0; i < 10; i++)
	
		//打印数组地址
		cout << p << endl;
		p++;
	


事实证明我是错的,还是没过脑子
总结:

由于指针的+1是按照数据类型所占字节往后移动字节,所以打印出来的地址是跟数组连续的,并不会跑偏
而因为最后一个地址已经不在数组内了,所以解引用之后会出现乱码

所以,实践才能得出真理,不实践也就不知道自己错得多离谱

感谢观看,持续学习,持续进步

以上是关于小知识——指针跑到数组外了会怎样的主要内容,如果未能解决你的问题,请参考以下文章

小知识——指针跑到数组外了会怎样

小知识——指针跑到数组外了会怎样

web盒子的文字跑到盒子外?

让学指针变得更简单

《C专家编程》第四章——令人震惊的事实:数组和指针并不相同

C指针乱记