c++面试题:指针与引用的相同和区别,如何相互转换?

1.c++指针与引用的相同和区别

指针是一个变量,它存储了另一个变量的地址,你可以使用它来访问那个变量。

引用是一个别名,它允许你使用另一个名称来访问一个变量。

以下是一个简单的使用指针的程序:

#include <iostream>

int main() {
  int x = 10;
  int *p = &x;  // p 指向 x

  std::cout << "x = " << x << std::endl;
  std::cout << "p = " << p << std::endl;  // 输出 p 的值,即 x 的地址
  std::cout << "*p = " << *p << std::endl;  // 输出 *p 的值,即 x 的值

  *p = 20;  // 使用指针改变 x 的值
  std::cout << "x = " << x << std::endl;

  return 0;
}

输出结果为:

x = 10
p = 0x7ffc0a8a3b10
*p = 10
x = 20

以下是一个简单的使用引用的程序:

#include <iostream>

int main() {
  int x = 10;
  int &y = x;  // y 是 x 的引用

  std::cout << "x = " << x << std::endl;
  std::cout << "y = " << y << std::endl;  // 输出 y 的值,即 x 的值

  y = 20;  // 使用引用改变 x 的值
  std::cout << "x = " << x << std::endl;

  return 0;
}

输出结果为:

x = 10
y = 10
x = 20

2.相同点((指针与引用))
  • 都可以被用来访问其他变量
  • 都可以被赋值为另一个变量的地址或者变量名
3.区别(指针与引用)
  • 指针是一个独立的变量,而引用必须在创建时被初始化
  • 指针可以被赋值为空指针,而引用不能
  • 指针可以在运行时被赋予不同的值,而引用只能在初始化时被赋值
4.指针与引用如何相互转换?

**指针转引用:**可以使用 & 操作符将指针转换为引用。例如:

int x = 10;
int *p = &x;
int &y = *p;  // y 是 x 的引用

**引用转指针:**可以使用 & 操作符将引用变量的地址赋值给指针。例如:

int x = 10;
int &y = x;
int *p = &y;  // p 指向 y,也就是 x
5.指针与引用的关系

引用本质上就是常指针

引用比指针更安全,因为引用在创建时必须被初始化,并且之后不能再被赋值。这使得引用更加简单和安全。

指针更加的灵活,指针的优点在于它可以在运行时改变指向的内存地址。但是这也同时带来了风险,因为你可能会忘记初始化指针,或者将它赋值为一个无效的内存地址。

所以,选择使用指针还是引用取决于你的需求。如果你需要在运行时改变指向的内存地址,那么使用指针就更合适。如果你只是需要给一个变量取一个别名,那么使用引用就足够了。

  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值