c++ - 通过指针传递的区别-C++

标签 c++ pointers

以下代码有什么区别:-

 int a;
 int *p;
 p=&a;
 function(p);

 int a;
 function(&a);

我在读一本书,有时他们使用第一个代码,有时使用另一个。虽然这不是一本好书(由本地作者撰写)。

两种代码的工作方式相同还是有任何区别?

另外,在效率方面有什么区别吗,有那么重要吗?

谢谢

最佳答案

对于引用,对象必须已经存在才能引用它。至于指针,声明指针时对象不需要已经存在

例子:

int &i = 10;       //Invalid
const int &i = 10; //Valid

还有

不能声明引用数组:

int &tab[] = {2,3};  //Invalid
int * tab[] = {2,3}; //Valid

在实践中,引用大多被用作函数的参数和返回值;

关于c++ - 通过指针传递的区别-C++,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11524496/

相关文章:

c++ - 存储在 std::map/std::set 中与存储所有数据后对 vector 进行排序

c++ - 在 C++ 中使用 bitset 容器

c++ - 使用 makefile 将静态库与 OTL 链接时 undefined reference

将结构指针转换为另一个嵌入结构

c - C 中的动态数组 vector

c - 为什么这段使用 qsort 函数的代码在 C 中不起作用?

c++ - 在 C++ 中解析字符串的最佳方法是什么

c++ - 如何使用 C 预处理器将连接的字符串转换为宽字符?

c++ - static_cast const 引用 void*

c - 当 malloc 结构指针时,它们的固定大小变量是否会进入堆栈?