当前位置: 首页 > wzjs >正文

网站开发简称深圳网站建设公司

网站开发简称,深圳网站建设公司,上海网站排名公司,网站网页压缩面试题:C指针和引用有什么区 C指针和引用有什么区别? 在 C 中,指针和引用都是用来访问其他变量的值的方式,但它们之间存在一些重要的区别。了解这些区别有助于更好地理解和使用这两种工具。 01 指针 指针(Pointer…

面试题:C++指针和引用有什么区

C++指针和引用有什么区别?

在 C++ 中,指针和引用都是用来访问其他变量的值的方式,但它们之间存在一些重要的区别。了解这些区别有助于更好地理解和使用这两种工具。

01

指针

指针(Pointer)

定义:

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

指针的类型是指向的数据的类型。

声明:

指针通常用星号 * 来声明,例如 int *p; 表示 p 是一个指向 int 类型的指针。

赋值:

指针可以通过赋值操作来指向不同的地址,例如 p = &a;,其中 &a 是变量 a 的地址。

指针可以指向 nullptr 或 NULL(在 C++11 之后推荐使用 nullptr)表示不指向任何对象。

解引用:

使用星号 * 来解引用指针并访问它所指向的数据,例如 *p = 10;。

内存管理:

指针需要手动分配和释放内存(使用 new 和 delete)。

指针可以指向任何类型的内存,包括未初始化的内存区域。

安全性

使用指针时需要特别小心,因为访问无效或已释放的内存可能导致程序崩溃或未定义行为。

代码示例:

#include <iostream>
int main() {    int a = 10;    int *p = &a;  // p 指向 a    *p = 20;      // 修改 a 的值    std::cout << "a: " << a << std::endl;  // 输出 20
    p = nullptr;  // p 不再指向任何东西    *p = 30;      // 错误!p 为 nullptr    return 0;}

02

引用

引用(Reference)
定义

引用是一个别名,它是一个已经存在的变量的另一个名字。

引用不是真正的变量,它不占用额外的存储空间。

声明

引用通常用 & 符号声明,例如 int &r = a; 表示 r 是变量 a 的引用。

赋值

引用一旦初始化后就不能更改,也就是说,不能重新绑定到另一个对象。一旦绑定后,引用始终指向同一个对象。

初始化时必须立即绑定到一个对象,不能是 nullptr。

解引用:

引用本身就是一个左值(可以出现在赋值的左边),因此不需要解引用即可访问其绑定的对象,例如 r = 10;。

内存管理:

引用本身不涉及内存分配,它只是现有对象的一个别名。

引用通常用于传递大对象或作为函数返回值,以避免不必要的拷贝。

安全性:

使用引用相对安全,因为引用总是有效,不会指向不存在的对象。

代码示例:

#include <iostream>
int main() {    int a = 10;    int &r = a;  // r 是 a 的引用    r = 20;      // 修改 a 的值    std::cout << "a: " << a << std::endl;  // 输出 20
    // 下面的语句是非法的,因为引用不能重新绑定到另一个对象    // int b = 30;    // r = b;  // 错误!r 不能重新绑定
    return 0;}03

引用不占用内存空间

看下面示例代码:

#include <iostream>
int main() {    int a = 9;    int& b = a;  // b 是 a 的引用    int* p = &a;
    std::cout << "a 的地址: " << &a << std::endl;    std::cout << "b 的地址: " << &b << std::endl;    std::cout << "p 的地址:" << &p << std::endl;
    return 0;}

运行输出:

可以看到引用b的地址和变量a的地址是一样的,b就是a的一个别名,它不涉及到额外的内存分配。但是指针p是一个变量,指针本身也会占用内存。

在 C++ 中,引用的内存分配如下:

变量 a:

分配一块内存空间存储 a 的值。

引用 b:

不需要分配新的内存空间,它直接绑定到 a 上。

因此,无论在代码中创建多少个引用,它们都不会占用额外的内存空间,只会占用现有变量的内存。

04
总结

指针:

指针是一个变量,存储地址。

指针本身占用存储空间。

指针可以初始化为空,可以重新指向其他地址。

引用:

引用不是一个变量,而是现有变量的别名。

引用本身不占用存储空间。

引用不能初始化为空,一旦初始化后不能重新绑定到另一个对象

http://www.dtcms.com/wzjs/237384.html

相关文章:

  • 深圳做网站建设月薪多少百度网站优化工具
  • 深圳龙岗区最新疫情最新消息太原seo计费管理
  • 宜昌医院网站建设全网营销系统
  • 网站开发和推广的不同网站推广沈阳
  • 系统之家官网简述seo
  • 怎样在网站上做专栏百度广告投放代理商
  • 如何自己注册域名郑州百度搜索优化
  • 苏州网站开发建设服务谷歌三件套
  • 可以做外链视频的网站seo关键词优化外包
  • 可以做区位分析的网站优化关键词的步骤
  • 网站的验证码是怎么做的性能优化工具
  • 做网站用什么软件语言四年级2023新闻摘抄
  • 全网营销型网站建设谷歌浏览器下载手机版
  • 广东建设网官网seo优化的网站
  • 怎么做正规网站吗友情链接互换
  • 做网站浏览器软文推广代理
  • 厦门鹏中兴建设网站合肥网
  • 苏州网站建设推荐q479185700霸屏免费网站优化排名
  • 青岛开发区网站快速排名优化seo
  • 东营做网站营销推广方案案例
  • wordpress更新5.2信阳seo优化
  • windowxp做网站服务器b站推广渠道
  • 河南郑州网站关键词排名助手世界球队实力排名
  • 一台服务做两个网站吗专业做网站的公司
  • 网站界面设计的基本原则是什么百度网盘网页版官网
  • 网站建设预算百度地图网页版进入
  • c#做的网站怎么上传seo优化系统
  • 成都科技网站建设找北京seo多少钱
  • 公司 网站源码站长seo综合查询
  • 网站开发 教程百度招聘网最新招聘信息