直接用地址的操作

 大家都知道,每一个变量都有自己的存储空间。而地址就是用来唯一地标识存储空间。
这样就很容易让我们联想到:可以直接通过地址来代替变量,来参加程序的运算。
也就是说,我们在程序运算中可以不用变量,而直接对地址进行操作。
说了这么多,大家可能还不明白,我到底是什么意思。下面就举几个例子来说明。
例一:
#i nclude<stdio.h>
int main(void)
{
    scanf("%d",(int*)0x0100);
    printf("%d",*((int*)0x0100));

}
由上例可知,0x0100一个存储空间地址.我们通过int*强制类型转换,
将0x0100的类型转换成int*型.在scanf()函数执行时,将从标准输入设备中输入的
整型值放在以0x0100为首址的空间中.而在printf()函数执行时,*((int*)0x0100)的作用
就是在0x0100为首址的空间中取出一个整型数,然后打印在标准输出设备上.
以上这个例子模拟有变量例子:
#i nclude<stdio.h>
int main(void)
{
 int var;/*假设变量的存储空间的首址为0x0100*/
 scanf("%d",&var);/*&var就是取var的首址,相当于scanf("%d",0x0100);*/
 printf("%d",var);/* *((int*)0x0100)就是var的值.*/
}

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值