C语言指针越界访问举例



指针越界访问举例


我们都知道const修饰的是一个常量,是不可以被改变的量。但是在C语言中,它也许是一个中看不中用的修饰符。它是希望我们不去改变它的值,但是实际上C却不能阻止我们去修改它。和C++,Java不同,C++中的const就不能被改变。C中就并没有这种强化,当然也有它的道理。下面我们来看一个例子操作一下const常量:


测试代码如下


我们试图去修改一个常量的值。


3.png


运行结果如下


由于我们已经定义a为一个int类型的常量,所以我们不能再将一个a作为等式左边的量去修改它的值,这个时候编译器就会提示我们a是一个只读的量。这个时候编译器还会阻止我们去修改它的值。


4.png


测试代码如下


p指向的是b的地址,但是由于我们对它进行了一个越界的访问,使它的地址加了4个字节,指向了a的地址。此时我们通过指针对a的值进行修改。


5.png


运行结果如下


可以看到a的值被我们改变了。


6.png


C中的const告诉我们这只是一个尽量不要去改变的值,告诉编译器在编译的过程中尽量不要改变,但是在运行的时候就没有办法保证,这也可能是C对于底层操作的一个思想。和C++面向对象和应用开发的方式思路不太一样。C面向的是内存,而C++更多的是面向事物,对象之间的关系。



【本文由麦子学院独家原创,转载请注明出处并保留原文链接】

logo
© 2012-2016 www.maiziedu.com
蜀ICP备13014270号-4 Version 5.0.0 release20160127

您有一个400抵2000现金红包未使用!

客服热线 400-862-8862

回到顶部