指針(*)、取地址()、解引用(*)與引用()

指針(*)、取地址(&)、解引用(*)與引用(&)

C++ 提供了兩種指針運算符,一種是取地址運算符 &,一種是間接尋址運算符 *。

指針是一個包含了另一個變量地址的變量,您可以把一個包含了另一個變量地址的變量說成是"指向"另一個變量。變量可以是任意的數據類型,包括對象、結構或者指針。

指針與取地址

例程:

int main() {int num = 3;int* p = #			// 將變量num的地址取出來,存到指針p中printf("%d 的地址是 %p\n", num, p);return 0;
}

輸出

3 的地址是 0x7ffeefbff3ac

上面int* p定義了一個指針p,這個指針指向的地址所存放的變量的數據類型是int,在本例程中,即是指向int型變量num,而p的值即是變量num的地址。

而&num中的&是取地址操作符,當&作用于一個對象上時,它返回了該對象的地址,比如例程中的&num即是為變量num的地址。

解引用與指針賦值

例程

int main(){int num = 7;  int* p = #  printf("數值%d所在的地址是 %p\n", num, p);  printf("指針p所指向的地址為 %p , 該地址上所保存的值為%d\n", p, *p);  *p = 100;  printf("指針p所指向的地址為 %p , 該地址上所保存的值為%d\n", p, num);  return 0;  
}

輸出:

數值7所在的地址是 0x7ffeefbff3b8
指針p所指向的地址為 0x7ffeefbff3b8 , 該地址上所保存的值為7
指針p所指向的地址為 0x7ffeefbff3b8 , 該地址上所保存的值為100

注意這里*操作符為解引用操作符,它返回指針p所指的對象的值(注意不是地址)。

我們可以對*p賦值(對左值賦值),從而改變p所指的地址上所保存的值,從而改變此地址所存儲的變量num的值。(上面num的值變為100)

當然,我們也可以給指針p賦值,使其指向另外一個地址(這樣就改變了在解引用時獲取的左值):

int main(void)  
{  int num = 7, another = -5;  int *p = #  p = &another;  printf("%d\n", *p);//此時p指向了another,所以輸出了another的值,即-5  return 0;  
}  

輸出

-5

引用

最通俗的解釋:引用就是起別名

引用在C中沒有,在C++中才有。

  
int main()  
{  int val = 7, val2 = 999;  int &refval = val, &refval2 = val2; //引用必須要初始化,使其綁定到一個變量上  //修改引用的值將改變其所綁定的變量的值  refval = -12;  printf("%d %d\n", val, refval);//-12,refval的值和val一樣  //將引用b賦值給引用a將改變引用a所綁定的變量的值,  //引用一但初始化(綁定),將始終綁定到同一個特定對象上,無法綁定到另一個對象上  refval = refval2;  printf("%d %d\n", val, refval);//999  return 0;  
}  

輸出

-12 -12
999 999

總結

*操作符:

  1. 定義一個指針

    int* p;
    
  2. 將一個指針(地址)解引用得到改地址所存的值

    cout << *p << endl;
    

&操作符

  1. 取地址,將某個變量在內存中所存放的地址拿到

    cout << &num << endl;
    
  2. 引用,進行引用,可以理解為給變量起別名,作用在引用上的所有操作事實上都是作用在該引用所綁定的對象上。

    int val = 7;
    int &refval = val;
    

Ref:

https://www.runoob.com/cplusplus/cpp-pointer-operators.html

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/532850.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/532850.shtml
英文地址,請注明出處:http://en.pswp.cn/news/532850.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

matlab電類,985電氣研二,有發過考研經驗貼 電氣電力類的有

該樓層疑似違規已被系統折疊 隱藏此樓查看此樓clc;clear;p[2.259;2.257;2.256;2.254;2.252;2.248;2.247;2.245;2.244;2.243;2.239;2.238;2.236;2.235;2.234;2.231;2.229;2.228;2.226;2.225;2.221;2.220;2.219;2.217;2.216;2.211;2.209;2.208;2.207;2.206;2.202;2.201;2.199;2.1…

matlab legend 分塊,matlab?legend?分塊!

matlab legend 分塊&#xff01;(2013-03-26 18:07:38)%%%壓差clc;clear all;figure(55);set (gcf,Position,[116 123 275 210],color,w);P[25 26 27 28 29 30 31 32 33 34 35];%理論q0.00006*pi*28*P*10^(6)*0.03^3/(12*0.028448*5);q1110.00006*pi*28*P*10^(6)*0.03^3/(12*0.…

利用opencv-python繪制多邊形框或(半透明)區域填充(可用于分割任務mask可視化)

利用opencv-python繪制多邊形框或&#xff08;半透明&#xff09;區域填充&#xff08;可用于分割任務mask可視化&#xff09; 本文主要就少opencv中兩個函數polylines和fillPoly分別用于繪制多邊形框或區域填充&#xff0c;并會會以常見用途分割任務mask&#xff08;還是筆者…

matlab與maple互聯,Matlab,Maple和Mathematica三款主流科學計算軟件的互操作

本文根據網上零散的信息以及這三款軟件自帶的說明文檔整理而成&#xff0c;為備忘而記錄。記錄了Matlab和Maple之間的相互調用&#xff0c;以及Matlab和Mathematica之間相互調用的安裝配置方法。為何需要互操作&#xff1f; 數值計算和圖形方面Matlab毫無疑問是最強的&a…

PyTorch中的topk方法以及分類Top-K準確率的實現

PyTorch中的topk方法以及分類Top-K準確率的實現 Top-K 準確率 在分類任務中的類別數很多時&#xff08;如ImageNet中1000類&#xff09;&#xff0c;通常任務是比較困難的&#xff0c;有時模型雖然不能準確地將ground truth作為最高概率預測出來&#xff0c;但通過學習&#…

java高級語言特性,Java高級語言特性之注解

注解的定義Java 注解(Annotation)又稱 Java 標注&#xff0c;是 JDK1.5 引入的一種注釋機制。注解是元數據的一種形式&#xff0c;提供有關于程序但不屬于程序本身的數據。注解對它們注解的代碼的操作沒有直接影響。注解本身沒有任何意義&#xff0c;單獨的注解就是一種注釋&am…

C/C++中的typedef 和 #define

C/C中的typedef 和 #define typedef C/C中的關鍵字typedef允許用戶為類型名來起一個新名字&#xff0c;通常會是縮寫或者能夠清晰表明類型含義的新名字。 例&#xff1a; typedef unsigned int UINT; UINT 100;值得注意的是&#xff0c;typedef除了為C/C內置的數據類型取別…

php3.2.3 升級,thinkphp3.2.3 升級到3.2.4時出錯問題

有些項目最初用OneThink做的&#xff0c;而OneThink 默認使用的TP 是3.2.0 的&#xff0c;沒事的時候就想給升級一下&#xff0c;但是直接復制進去的時候&#xff0c;有錯誤&#xff0c;導致OneThink 不能運行&#xff0c;排查后&#xff0c;需要修改兩個地方1、修改 Applicati…

Positional Encodings in ViTs 近期各視覺Transformer中的位置編碼方法總結及代碼解析 1

Positional Encodings in ViTs 近期各視覺Transformer中的位置編碼方法總結及代碼解析 最近CV領域的Vision Transformer將在NLP領域的Transormer結果借鑒過來&#xff0c;屠殺了各大CV榜單。對其做各種改進的頂會論文也是層出不窮&#xff0c;本文將聚焦于各種最新的視覺trans…

mysql 分析查詢語句,MySQL教程之SQL語句分析查詢優化

怎么獲取有功能問題的SQL1、經過用戶反應獲取存在功能問題的SQL2、經過慢查詢日志獲取功能問題的SQL3、實時獲取存在功能問題的SQL運用慢查詢日志獲取有功能問題的SQL首要介紹下慢查詢相關的參數1、slow_query_log 發動定制記載慢查詢日志設置的辦法&#xff0c;能夠經過MySQL指…

關于PyTorch中的register_forward_hook()函數未能執行其中hook函數的問題

關于PyTorch中的register_forward_hook()函數未能執行其中hook函數的問題 Hook 是 PyTorch 中一個十分有用的特性。利用它&#xff0c;我們可以不必改變網絡輸入輸出的結構&#xff0c;方便地獲取、改變網絡中間層變量的值和梯度。這個功能被廣泛用于可視化神經網絡中間層的 f…

geoda權重矩陣導入matlab,空間計量經濟學-分析解析.ppt

廈門大學 鄧明 空間截面回歸模型 地理加權回歸模型 地理加權回歸模型擴展了普通線性回歸模型。在GWR模型中&#xff0c;特定區位的回歸系數不再是利用全部信息獲得的假定常數&#xff0c;而是利用鄰近觀測值的子樣本數據信息進行局域(Local)回歸估計而得&#xff0c;并隨著空間…

樹莓派攝像頭基礎配置及測試

樹莓派攝像頭基礎配置 step 1 硬件連接 硬件連接&#xff0c;注意不要接反了&#xff0c;排線藍色一段朝向網口的方向。&#xff08;筆者的設備是樹莓派4B&#xff09; step 2 安裝raspi-config 安裝 raspi-config raspi-config在raspbian中是預裝的&#xff0c;而在kali、…

matlab sobel銳化,sobel銳化 - yirui wu.ppt

sobel銳化 - yirui wu第六章 圖像銳化 圖像銳化的概念 圖像銳化的目的是加強圖像中景物的細節邊緣和輪廓。 銳化的作用是使灰度反差增強。 因為邊緣和輪廓都位于灰度突變的地方。所以銳化算法的實現是基于微分作用。 圖像銳化方法 圖像的景物細節特征&#xff1b; 一階微分銳化…

使用百度云智能SDK和樹莓派搭建簡易的人臉識別系統 Python語言版

硬件 樹莓派4B一個CSI攝像頭一個 筆者使用的是樹莓派4B和CSI攝像頭&#xff0c;但是樹莓派3和USB攝像頭等相似設備均可。 百度云智能設置 Step 1 登錄 百度云智能 網址https://cloud.baidu.com/ 首先登錄百度賬號&#xff0c;與百度云、百度貼吧等互通&#xff0c;可直接…

php 5.6 引用傳遞,升級到5.6.x后如何在php中修復引用傳遞

我最近將fom php 5.2升級到5.6,并且有一些代碼我無法修復&#xff1a;//Finds users with the same ip- or email-addressfunction find_related_users($user_id) {global $pdo;//print_R($pdo);//Let SQL do the magic!$sth $pdo->prepare(CALL find_related_users(?));$…

RuntimeError: [enforce fail at inline_container.cc:145] . PytorchStreamReader failed reading zip arc

RuntimeError: [enforce fail at inline_container.cc:145] . PytorchStreamReader failed reading zip archive: failed finding central directory 原因分析 這個報錯是出現在PyTorch在讀入模型參數時&#xff1a; checkpoint torch.load(epoch_15.pth, map_locationcpu)…

xp搭建 php環境,windows xp 下 LAMP環境搭建

1. apache安裝步驟如下圖在瀏覽器中輸入&#xff1a;localhost&#xff0c;出現下面頁面說明已成功安裝apache。2. mysql安裝如下圖顯示在運行里面輸入cmd &#xff0c;然后連接測試mysql &#xff0c;如圖所示&#xff1a;3. php安裝(1)將php壓縮包解壓到安裝路徑中的php目錄…

C++中的虛函數(表)實現機制以及用C語言對其進行的模擬實現

C中的虛函數(表)實現機制以及用C語言對其進行的模擬實現 聲明&#xff1a;本文非博主原創&#xff0c;轉自https://blog.twofei.com/496/&#xff0c;博主讀后受益良多&#xff0c;特地轉載&#xff0c;一是希望好文能有更多人看到&#xff0c;二是為了日后自己查閱。 前言 …

php 前端模板 yii,php – Yii2高級模板:添加獨立網頁

我在backend / views / site下添加了help.php,并在SiteController.php下聲明了一個能夠識別鏈接的函數public function behaviors(){return [access > [class > AccessControl::className(),rules > [[actions > [login, error],allow > true,],[actions > […