簡體   English   中英

使用指針模擬通過值傳遞函數(C和C ++)中的通過引用

[英]Using pointers to emulate Pass-by-Reference in a Pass-by-Value function (C and C++)

因此,我試圖理解一段簡單的代碼,該代碼使用“按值傳遞”函數中的指針“模擬”“按引用傳遞”。 該示例是C慣例,因為C中沒有通過引用的傳遞。但是我也很好奇它對C ++的影響。

因此,運行此代碼后,將交換值:

void swap(int* a, int* b)
{
  int temp;
  temp = *a;
  *a = *b;
  *b = temp;
}

我試圖理解為什么將指針作為參數傳遞會產生按引用傳遞效果? 這是否意味着通過指針執行的所有操作都具有“按引用傳遞”效果? 因此,一旦退出函數,交換的內存位置將不會返回? 這在C ++中也有效嗎?

編碼新手,所以我希望自己能說清楚。

基本上,你的代碼復制內存地址的功能,而如果你省略了*操作,該功能將被復制什么是內存地址的功能。 這是每行本質上的意思。

// Give me the memory address of a and b.
void swap(int* a, int* b)
{
  int temp;
  // Whatever value is at memory address 'a', copy it to temp.
  temp = *a; 
  // Whatever value is at memory address 'b', copy it to memory address 'a'.
  *a = *b;
  // Copy temp over the value at memory address 'b'.
  *b = temp;
}

是的,在C ++中同樣有效。

您基本上可以將指針和引用視為同一件事。 它們都引用地址。 因此,如果將地址(作為指針或引用)傳遞給函數,並且地址的內容發生變化,則該變化仍會在函數末尾存在。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM