C语言指针越界访问举例
优质
小牛编辑
147浏览
2023-12-01
指针越界访问举例
我们都知道const修饰的是一个常量,是不可以被改变的量。但是在C语言中,它也许是一个中看不中用的修饰符。它是希望我们不去改变它的值,但是实际上C却不能阻止我们去修改它。和C++,Java不同,C++中的const就不能被改变。C中就并没有这种强化,当然也有它的道理。下面我们来看一个例子操作一下const常量:
测试代码如下
我们试图去修改一个常量的值。
运行结果如下
由于我们已经定义a为一个int类型的常量,所以我们不能再将一个a作为等式左边的量去修改它的值,这个时候编译器就会提示我们a是一个只读的量。这个时候编译器还会阻止我们去修改它的值。
测试代码如下
p指向的是b的地址,但是由于我们对它进行了一个越界的访问,使它的地址加了4个字节,指向了a的地址。此时我们通过指针对a的值进行修改。
运行结果如下
可以看到a的值被我们改变了。
C中的const告诉我们这只是一个尽量不要去改变的值,告诉编译器在编译的过程中尽量不要改变,但是在运行的时候就没有办法保证,这也可能是C对于底层操作的一个思想。和C++面向对象和应用开发的方式思路不太一样。C面向的是内存,而C++更多的是面向事物,对象之间的关系。