操作指定位置的內存
首先讓我們看下面一個例子
int a
=
100;
int *p=&a;
*p=200;
經過上面這三條語句之后,變量a的值就從100改為200了,這是很顯然的,因為
*p
是解引用指針,其中變量p中存放的是變量a的地址,在這里是
0x0012ff78,
也就是說
*
操作符操作的是一個地址值,那么我們可以直接用
*
來操作地址值么?
*0x0012ff78 =300;
上面這條語句編譯不過,因為指針解引用操作符
*
之后跟的不是一個指針類型,而是一個整型的值,這樣是不行的,要想實現上面的功能,必須要把該整型值轉化成指針類型。
我們可以這樣處理
*(int *)
0x0012ff78=300; //
把整型強制轉化成
int
類型的指針
這樣
變量
a
的值就變成
300
了。
其實上面這種用法在一般的程序設計中是很少用的,因為編譯器無法幫助你把某一個特定的變量放在一個內存中指定的位置,所以無法預知它的地址。小心使用這種方式不小心有就會誤操作內存中的有用的數據。
上面這種用法其實一般都是用在操作硬件方面,在一些機器上面,要想與設備控制器的進行通信,就必須通過在某個特定的內存的地址來讀取和寫入值。這些地址是預先已經知道的,其實這些地址也就是與硬件通信的接口。
?
上面就是操作指定位置的內存的方法。
?
此文完。
?
?
?