因此,我试图理解一段简单的代码,它使用Pass by value函数中的指针"模拟"传递引用.这个例子是作为一个C实践给出的,因为在C中没有通过引用,但我也很好奇它对C++的影响.
所以运行此代码后,值将被交换:
void swap(int* a, int* b)
{
int temp;
temp = *a;
*a = *b;
*b = temp;
}
Run Code Online (Sandbox Code Playgroud)
我试图理解为什么传递指针作为参数创建传递引用效果?这是否意味着通过指针执行的所有操作都具有传递引用效果?因此,一旦我们退出该功能,交换的内存位置将不会返回?这在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;
}
Run Code Online (Sandbox Code Playgroud)
是的,它在C++中同样有效.
| 归档时间: |
|
| 查看次数: |
130 次 |
| 最近记录: |