数据类型是高级语言层面的抽象

之前的疑问和猜想

“指针是一块内存的地址,引用是内存的别名。”

内存还能有名字?是不是都是地址?

我知道局部变量存在于函数的数据栈上,我猜:

对操作系统来说,程序内的地址都是相对寻址,地址范围局限于进程的地址空间。把视角缩小,放到进程的地址空间里来看,在编译之后,局部变量和指针没有区别,二者长度相同,都是一个地址区别在于对两者的操作码不同。

CSAPP中的解答

“虽然C语言提供了一种模型,可以在内存中声明和分配各种数据类型的对象,但是机器代码只是简单地将内存看成一个很大的、按字节寻址的数组。C语言中的聚合数据类型,例如数组和结构,在机器代码中用一组连续的字节来表示。即使是对标量数据类型,汇编代码也不区分有符号或无符号整数,不区分各种类型的指针,甚至不区分指针和整数。”

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值