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/zh-tw/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

發表回復

登錄後才能評論