面试题答案
一键面试- 指针自增运算(
ptr++
):- 结果:
ptr
指向的地址增加了sizeof(int)
字节。假设int
类型在当前系统下占4字节,如果num
的初始地址为0x1000
,那么执行ptr++
后,ptr
指向的地址变为0x1004
。它并没有改变num
变量的值,num
仍然为5
。 - 原因:指针是一个变量,它存储的是另一个变量的地址。指针的自增运算,是按照指针所指向的数据类型的大小,增加指针所存储的地址值。对于
int*
类型的指针,自增运算会使指针指向下一个int
类型数据的存储位置。
- 结果:
- 引用自增运算(
ref++
):- 结果:
num
的值增加了1,变为6
。因为引用ref
是num
的别名,对ref
的操作等同于对num
的操作。 - 原因:引用本质上是给已存在变量起的一个别名,它和被引用的变量共享同一块内存空间。所以当对引用进行自增运算时,实际上是对引用所绑定的变量进行自增运算。
- 结果: