C 语言指针高手

来源:百度知道 编辑:UC知道 时间:2024/09/18 03:55:15
*(int *)0x108000=5
什么意思啊,我百思不的其解,能详细解释下嘛。

0x108000是一个整数,可以代表内存中的一个地址,(int*)将其强转成int类型的一个指针。前面的*间址运算,将其赋值为5。也就是这个地址的内存里面存的是整型数据5。

地址编号0x108000的内存赋值5

我想大概是0x108000是整数类型指针,就是说他站sizeof(int)个位数,之后再与前面的*组合,表示0x108000这个地址上的数(后面)等于5
总结起来应该是0x108000~(0x108000 + sizeof(int))这段地址上的数等于5
sizeof(int)为int类型在编译器所占长度,由于编译器版本或者CPU类型的问题,保持移植性

0x108000是一个再普通不过的常数,只不过用16进制进行表示,前面的(int*)表示将这个数字解释为一个指向int的指针的类型,现在它就不是常数了,而变成了一个(int*)型变量的值,比如,你可以有如下赋值:
int *addr = (int*)0x108000;
而最前面的*表示找该地址的值,然后把那个值变成5.
注意,这个语句运行时可能出错,因为这个地址不一定你能访问。