C++取地址运算符:&的使用方法

一、基础概念

&是一种一元运算符,用于得到一个对象的内存地址。在C和C++中,变量都有一个唯一的地址,其中包含变量的值和类型信息。&运算符返回的值是一个指向该地址的指针。

int a = 10;
int* p = &a; //将指针p指向a的地址

可以使用sizeof操作符来获取一个变量占用的内存大小,可以使用&运算符和指针来修改或访问一个变量的值。

二、指针与引用

在C++中,使用指针和引用都可以访问和修改变量的值。

指针是一个指向其他对象的对象,它可以被赋值为另一个指针或者NULL,也可以通过指针访问或者修改它所指向的对象。使用指针需要注意空指针的问题。

int a = 10;
int* p = &a;
int* q = nullptr;

if(p != nullptr){
  *p = 20;
}

if(q == nullptr){
  std::cout << "q is a null pointer." << std::endl;
}

引用是一个对象的别名,它可以被赋值为另一个引用或对象,也可以通过引用访问或者修改它所指向的对象。引用在定义时必须进行初始化,且引用在初始化后不能再改变其值。使用引用需要注意避免空引用和野指针。

int a = 10;
int& r = a;

r = 20;

std::cout << a << std::endl; //输出20

三、函数参数中的&

在函数参数中使用&时,表示该参数是一个引用类型,它可以直接修改函数外部的变量的值。

void addOne(int& n){
  n += 1;
}

int a = 10;
addOne(a);

std::cout << a << std::endl; //输出11

当在函数参数中使用const关键字与&符号一起使用时,表示该参数是一个常量引用,它可以参与到函数的计算过程中,但是不能被改变。

void print(const int& n){
  std::cout << n << std::endl;
}

int a = 10;
print(a);

const int b = 20;
print(b);

四、数组与指针

指针可以用来存储数组的地址,也可以通过指针来访问和修改数组元素的值。

int a[5] = {1, 2, 3, 4, 5};
int* p = a;

for(int i = 0; i < 5; i++){
  std::cout << *(p + i) << std::endl;
}

C++14中引入了一个新特性,即使用&运算符来获取数组的地址,因此在C++14及以后的版本中,可以直接使用&a来获取数组的地址。

int a[5] = {1, 2, 3, 4, 5};
int* p = a; //等价于 int* p = &a[0];

for(int i = 0; i < 5; i++){
  std::cout << *(p + i) << std::endl;
}

五、结构体与类

结构体和类是C++中自定义类型的两种方式,也可以使用指针来访问和修改它们的成员变量。

struct Student{
  std::string name;
  int age;
};

Student s = {"Tom", 20};
Student* p = &s;

p->name = "Jerry";
p->age = 21;

std::cout << s.name << ", " << s.age << std::endl; //输出Jerry, 21

六、总结

&运算符可以用于获取一个对象的内存地址,包括基本类型、数组、结构体和类等自定义类型。在C++中,指针和引用都可以用来修改变量的值,但是需要注意空指针、空引用和野指针的问题。在函数参数中使用&时,可以直接修改函数外部的变量的值。在访问数组时,可以使用&a来获取数组的地址,并使用指针来访问和修改数组元素的值。结构体和类也可以使用指针来访问和修改它们的成员变量。

原创文章,作者:小蓝,如若转载,请注明出处:https://www.506064.com/n/289198.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
小蓝的头像小蓝
上一篇 2024-12-24 03:02
下一篇 2024-12-24 03:02

相关推荐

  • cmd看地址

    本文将从多个方面详细阐述cmd看地址,包括如何查看本机IP地址、如何查看路由器IP、如何查看DNS服务器IP等等。 一、查看本机IP地址 要查看本机IP地址,首先需要打开cmd窗口…

    编程 2025-04-29
  • Python中init方法的作用及使用方法

    Python中的init方法是一个类的构造函数,在创建对象时被调用。在本篇文章中,我们将从多个方面详细讨论init方法的作用,使用方法以及注意点。 一、定义init方法 在Pyth…

    编程 2025-04-29
  • 尚硅谷官网地址用法介绍

    尚硅谷是国内一家领先的技术培训机构,提供了众多IT职业的培训,包括Java、Python、大数据、前端、人工智能等方向。其官网地址为http://www.atguigu.com/。…

    编程 2025-04-29
  • Python符号定义和使用方法

    本文将从多个方面介绍Python符号的定义和使用方法,涉及注释、变量、运算符、条件语句和循环等多个方面。 一、注释 1、单行注释 # 这是一条单行注释 2、多行注释 “”” 这是一…

    编程 2025-04-29
  • Python下载到桌面图标使用方法用法介绍

    Python是一种高级编程语言,非常适合初学者,同时也深受老手喜爱。在Python中,如果我们想要将某个程序下载到桌面上,需要注意一些细节。本文将从多个方面对Python下载到桌面…

    编程 2025-04-29
  • 条件运算符(?:)是什么意思?

    条件运算符(?:)是JavaScript中的一种特殊的运算符,也是许多编程语言中相似语法的一部分。它可以允许我们在一个简单、一行的语句中完成条件判断和赋值操作,非常方便。 1.语法…

    编程 2025-04-29
  • Python匿名变量的使用方法

    Python中的匿名变量是指使用“_”来代替变量名的特殊变量。这篇文章将从多个方面介绍匿名变量的使用方法。 一、作为占位符 匿名变量通常用作占位符,用于代替一个不需要使用的变量。例…

    编程 2025-04-29
  • Python按位运算符和C语言

    本文将从多个方面详细阐述Python按位运算符和C语言的相关内容,并给出相应的代码示例。 一、概述 Python是一种动态的、面向对象的编程语言,其按位运算符是用于按位操作的运算符…

    编程 2025-04-29
  • 百度地区热力图的介绍和使用方法

    本文将详细介绍百度地区热力图的使用方法和相关知识。 一、什么是百度地区热力图 百度地区热力图是一种用于展示区域内某种数据分布情况的地图呈现方式。它通过一张地图上不同区域的颜色深浅,…

    编程 2025-04-29
  • Matlab中addpath的使用方法

    addpath函数是Matlab中的一个非常常用的函数,它可以在Matlab环境中增加一个或者多个文件夹的路径,使得Matlab可以在需要时自动搜索到这些文件夹中的函数。因此,学会…

    编程 2025-04-29

发表回复

登录后才能评论