鍊錶操作中的值傳遞和位址傳遞

2021-10-19 23:37:42 字數 881 閱讀 9986

1、位址傳遞

function listnode(val) 

let a = new listnode(1);

let b = a; // 引用賦值

console.log(a,b);

b.next = new listnode(2);

b = b.next; //節點,引用賦值

console.log(a,b);

輸出結果如下,顯然可見,在b新增節點後,a也一起改變了,此時都是引用賦值:

2、值傳遞

修改 b = b.next 順序後,先將b賦值為null:

function listnode(val) 

let a = new listnode(1);

let b = a; // 引用賦值

console.log(a,b);

b = b.next; //賦值為null,值傳遞

b = new listnode(2);

console.log(a,b);

輸出結果如下,顯然可見,當鍊表被賦值為數值後,就是值傳遞了,此時b與a就沒有任何關係了,修改了b後,a也沒有一起改變:

注:此處的值傳遞是指給鍊錶賦值為數值時,而不是指給某乙個節點賦值數值。 

詳述值傳遞和位址傳遞

1.值傳遞 值傳遞可以簡單的理解為將實參的值傳遞給形參,之後即使修改了形參的值,實參的值還是不會改變。package yang public class yangyujie 執行結果 102.位址傳遞 位址傳遞,顧名思義傳遞的是位址,實參和形參指向同乙個位址,改變形參的值是可以改變實參的值的。pac...

C 值傳遞和位址傳遞

在c 呼叫函式時,會存在值傳遞和位址傳遞,也叫 傳引用和傳值 正好用到這方面內容,因此做個總結,加深一下理解,如果有不到位或者不準確的地方,請小夥伴們多指教。1 位址傳遞時,形參和實參是同乙個變數,即使用相同的記憶體空間,二者有相同的位址。而傳值時二者位址不同 2 位址傳遞時,由於沒有新建變數,所以...

值傳遞和位址傳遞的理解

void func int a int a 10 func a printf a d a 仍然顯示 a 10,因為整型引數a在func 中是按值傳遞的,也就是說func 僅使用a的值,而對儲存a的記憶體位址不加修改 void func int a int a 10 func a printf a d...