这在C++中意味着什么 **&a
What does this mean **&a in C++
下面两个功能有什么区别?
void init1(int **&a, int n)
{
a = new int *[n];
for (int i = 0; i<n; i++)
a[i] = new int [n];
}
和
void init1(int **a, int n)
{
a = new int *[n];
for (int i = 0; i<n; i++)
a[i] = new int [n];
}
谢谢
两者的区别在于,在int **&a
版本中,a
已通过引用传递。如果更改指针本身的值(也就是说,编写类似a = a+5;
的代码),则a
的值将在原始调用函数中被修改。
第一个函数通过引用传递双指针a
,第二个函数仅将双指针a
作为参数传递。
在第一个函数中,对a
所做的任何修改都将在函数退出后保留,而在第二个函数中,对a
的任何修改都不会保留。
相关文章:
- 这行代码在C++类中意味着什么
- 这对"With a stackless coroutine, only the top-level routine may be suspended."意味着什么
- @CPPFLAGS@在 Makefile.in 中意味着什么?
- 生成文件"relink"意味着什么?
- 从二进制流中读取时,将双精度变量的地址转换为 char* 意味着什么?
- 在这种情况下,"typename..."意味着什么?
- "in-situ without memory allocation" 字符串的愚蠢实现意味着什么?
- 使用typedef有什么用,它意味着什么
- GCC 的 -Wpsabi 选项究竟有什么作用?压制它意味着什么?
- 这在C++ "It does not own the underlying data, and so is cheap to copy or assign"中意味着什么
- 由于某种原因,我的代码中出现了 [json.exception.type_error.302]。我知道错误意味着什么,但我不知道哪里有故障
- 调用堆栈显示 SIGBUS,这意味着什么
- C++标准在[basic.scope.hiding]中"same scope"到底意味着什么?
- 评估对象的创建意味着什么?
- 当我们在 C++ 中说"initialize the object"时,它实际上意味着什么?
- C++这种结构"InterceptionKeyStroke &kstroke = * (InterceptionKeyStroke *) &stroke"意味着什么?
- 该语法在C 中意味着什么
- 链接标志对静态库意味着什么
- 由mpglib输出的"hip: Can't rewind stream by 74 bits"到底意味着什么?
- 这在 C# 中意味着什么以及如何使用它