关于c++:C面试八股文C中指针引用解引用和取地址有什么不同

53次阅读

共计 1061 个字符,预计需要花费 3 分钟才能阅读完成。

某日小二加入 XXX 科技公司的 C ++ 工程师开发岗位 2 面:

面试官:指针、援用、解援用和取地址是 C ++ 中的重要概念,请问它们在语法和语义上有所不同?

小二:指针 是一个变量,它存储了一个内存地址。

小二:援用 是一个别名,它容许应用一个变量的多个名称来拜访同一个内存地位。

小二:解援用 是指应用 * 运算符来拜访指针所指向的内存地位处的值。

小二:取地址 是指应用 & 运算符来获取变量的地址。

指针 是一个变量,它存储了一个内存地址。能够应用指针来拜访和批改存储在该地址处的值。指针能够通过 & 运算符获取变量的地址,也能够通过 * 运算符解援用指针来拜访该地址处的值。

int x = 10;  
int* ptr = &x; *// 获取 x 的地址 *  
*ptr = 20; *// 批改 x 的值 *  

援用 是一个别名,它容许应用一个变量的多个名称来拜访同一个内存地位。援用能够看作是指针的一种简化模式,它不须要应用 * 运算符来解援用,也不须要应用 & 运算符来获取地址。

int x = 10;  
int& ref = x; *// ref 是 x 的援用 *  
ref = 20; *// 批改 x 的值 *  

解援用 是指应用 * 运算符来拜访指针所指向的内存地位处的值。

int x = 10;
int* ptr = &x;
int y = *ptr; *// 解援用 ptr,获取 x 的值 *  

取地址 是指应用 & 运算符来获取变量的地址。

int x = 10;  
int* ptr = &x; *// 获取 x 的地址 *  

总的来说,指针和援用都能够用来拜访和批改变量的值,但它们的语法和语义有所不同。指针须要应用 * 运算符来解援用,而援用不须要。指针能够被从新赋值指向另一个内存地位,而援用一旦绑定到一个变量上就不能再绑定到另一个变量上。解援用和取地址是指针和援用的基本操作,它们能够用来拜访和批改变量的值以及传递变量的地址给函数。

面试官:十分好,那么你晓得援用是怎么实现的吗?

小二:援用的底层实现的具体细节在不同编译器上可能不同,然而有一种办法就是常量指针。同样,常量指针须要在初始化的时候绑定指向的对象,而且在绑定之后不能批改绑定的对象。这和援用的行为合乎。

面试官:能够对援用取地址吗?

小二:能够,取到的地址和对援用绑定的对象取到的地址雷同。

面试官:那么能够对援用解援用吗?(挖坑)

小二:当然不行,尽管底层实现可能是常量指针,但它只是对象的别名,行为和对象的行为统一。

面试官:任何状况下都不行吗?

小二:不行。(蜜汁自信)

面试官:如果援用的是指针呢?(淫笑)

小二:额,那是能够的。。。(爆汗)

面试官:好的,放弃通信畅通,回去等告诉吧。

小二:谢谢。

那么小二 2 面通过的概率大略有多大?

关注我,带你 21 天“精通”C++!(狗头)

正文完
 0