C语言,想在存储区的某个地址写上某个数值
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了C语言,想在存储区的某个地址写上某个数值相关的知识,希望对你有一定的参考价值。
比如我要在0X00070000的地址处存储数据,例如:0X12345678,请问该语句如何实现
参考技术A 假如你要存储的数据为“100”。 那就么定义一个 int指针。例如:int *p = 0x00070000;*p = 100;
值为0x12345678; 则 *p = 0x123456789; 参考技术B int *p=(int *)0x00070000;
*p=0x12345678;
这种写法是有一定危险性的追问
这么写,虽然不会报错,但是执行到该处时会直接进入hardfault
追答出错是正常的,这是运行时错误,不是编译时错误。系统是不提倡直接使用地址的,因为那个地址对应的虚拟地址空间(页)可能是只读属性等不可写属性或你的进程根本没有开辟那个空间,出错正常啊。
如何在C语言中用printf()输出某个值的地址?
1.C语言中要输出地址时通常以16进制的方式输出
2.
printf函数中要显示16进制数时用%x格式
3.
综上,要输出某个值的地址可以写为printf("%x",&变量);若变量为指针时,则应写为printf("%x",指针); 参考技术A 可以用printf("%d",&var);输出变量地址(10进制表示).
之所以每次都输出相同的地址值,是因为在C编译系统中为每一个变量仅分配一个内存地址,就是说不管这个变量存储的是什么值,它的内存地址总还是不变的. 参考技术B 1.
c语言中要输出地址时通常以16进制的方式输出
2.
printf函数中要显示16进制数时用%x格式
3.
综上,要输出某个值的地址可以写为printf("%x",&变量);若变量为指针时,则应写为printf("%x",指针);
以上是关于C语言,想在存储区的某个地址写上某个数值的主要内容,如果未能解决你的问题,请参考以下文章
在c语言中子函数引用主函数中的值和引用主函数某个值的地址的区别