[英]Is Passing a Dynamically Allocated Array to a Function in C an Instance of Pass-by-value or Pass-by-reference?
[英]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.