指標 引用 傳值 傳址

2021-06-22 17:15:49 字數 2528 閱讀 9364

個人總結

首先定義:

struct binarytreenode

;

定義變數:

1、binarytreenode

* ptreenode;

2、binarytreenode

* * n_ptreenode; 3、

binarytreenode

k;4、

binarytreenode

& m=k; (引用變數必須初始化)

定義:位址也稱為指標,即變數所儲存區域的第乙個位元組的位址。

指標變數:這種型別的變數存放的是記憶體位址值

與指標有關的運算子:

&——取址運算子 :返回變數的記憶體位址

例如:ptreenode=&k; (取變數k的位址 賦給 指標變數ptreenode 即 指標變數ptreenode

指向 binarytreenode 型別的變數k)

注意:n_ptreenode=&ptreenode 是返回指標變數ptreenode的位址 而非它儲存的值(k的記憶體位址)  

&運算子它既可以用於指標變數,也可用於非指標變數

*——間接訪問運算子 :訪問 指標指向的變數

binarytreenode

s=*ptreenode; (將 指標變數ptreenode指向的變數k的值取出,並賦給s)

*n_ptreenode 是 指向binarytreenode型別的指標

注意:*運算子它只能用於指標型別的變數

用法: 《資料型別》 & 《引用變數名》 = 《變數名》; 例如binarytreenode

&m3=k; (等號右邊必須為變數)

定義:乙個已定義變數的別名,操作引用型別的變數(別名)即操作這個已定義的變數,

引用型別的變數沒有單獨的儲存空間,與被引用的變數使用同一空間;

(上圖為 簡化模型 m kn_ptreenodeptreenode 可能不連續 而且binarytreenode 簡化了

)將基本型別變數的值 拷貝 給 形參變數

將變數的位址 拷貝 給 形參變數 (個人認為傳址 也是 一種特殊的 傳值 只是是位址值而已)

指標和引用都是 傳址   基本型別 都是傳值

想通過 函式引數改變乙個變數  必須通過這個變數的位址(它的引用或指向它的指標)  如果要修改的這個變數的型別是指標,這要通過 該指標的位址 即 指向該指標的指標

例如:

void change(binarytreenode  * ptreenode,binarytreenode & m)
想要修改指標

ptreenode 就必須 用它的位址 即指向

ptreenode的指標n_ptreenode

上面的**中

ptreenode指向的物件 不會改變 m被引用的變數 將 改變,是另乙個了

( 他們分別修改的變數 分別是 指標變數ptreenode 

和 基本變數m ptreenode它指向的型別 )

void change2(binarytreenode  * ptreenode,binarytreenode & m)
上面的**中ptreenode指向的物件 將會被修改 m被引用的變數 將會被修改

( 他們分別修改的變數 分別是 指標變數ptreenode它指向的型別

和 基本變數m ptreenode它指向的型別 )

指標.h檔案

#includeusing namespace std;

struct binarytreenode

;

指標.cpp檔案

#include"指標.h";

//定義變數:

binarytreenode * ptreenode;

binarytreenode * * n_ptreenode;

binarytreenode k;

binarytreenode & m=k;

void change(binarytreenode * ptreenode,binarytreenode & m)

void main(){

k.m_nvalue=5;

//m=k;

ptreenode=&m;

n_ptreenode=&ptreenode;

binarytreenode s=*ptreenode;

cout

C 傳值 傳址 傳指標 傳引用

相關概念 c 三種傳遞引數方式 傳引數的值 稱值傳遞,簡稱傳值 傳引數的位址 稱位址傳遞,簡稱為傳址 和引用傳遞 稱為傳引用 相應的函式傳值呼叫,傳址呼叫和傳引用呼叫 形參 實參 函式定義時參數列中的引數稱為形式引數,簡稱形參 函式呼叫時參數列中的引數稱為實際引數,簡稱實參。實參和形參之間的資料傳遞...

傳值,傳址和傳引用

傳值方式 將實參的值拷貝給函式或方法,在函式內對形參進行操作,操作的物件是實參的拷貝,對實參本身沒有影響,在函式結束返回後,形參被丟棄釋放,實參的內容不會被改變。c 一條基本原則 在預設情況下,引數只能以值傳遞的方式給函式,被傳遞到函式的只是變數的值,永遠不會是變數本身。void exchange ...

傳值 傳址和傳引用

在編寫個人函式的時候,你將受到c 中一條基本原則的限制 在預設的情況下,引數只能以值傳遞的方式給函式。這句話的理解是 被傳遞到函式的只是變數的值,永遠不會是變數本身。舉例如下 include void changeage int age,int newage 如果想要實現計畫功能,需要怎麼改?mai...