C++中传递引用中函数参数的问题
Problems with functions parameters in pass by references in C++
我是c++的新手,正在学习它。我已经写了以下代码。
#include<iostream>
#include<cstdio>
using namespace std;
void first(int &x,int n)
{
int i;
for(i=0;i<n;i++)
{
cout<<x+i;
}
cout<<endl;
}
void second(int *x,int n)
{
int i;
for(i=0;i<n;i++)
{
cout<<*x+i;
}
cout<<endl;
}
int main()
{
int exm[5]={1,2,3,4,5};
first(exm[0],5);
second(exm,5);
return 0;
}
这个程序输出正确。但问题是我不明白使用&和*在函数参数中。。。两者都是通过引用传递参数的技术,当我们通过引用传递时,我们只发送内存地址。。。但在函数中,当我尝试调用函数时,首先是
first(exm,5);
函数发生错误。为什么?但是当我按照调用函数时
first(exm[0],5);
它编译正确,输出正确。。。但我知道这两个调用是等价的。。。那么为什么会出现这种错误呢
使用&以及函数参数中的*?
变量exm
的类型为int[5]
,不满足first(int &x,int n)
的签名
但是int[N]
可以隐式转换为指向数组的第一个元素的int*
,因此second(exm,5)
可以编译。
使用&以及函数参数中的*?
这是引用和指针之间的区别。
他们之间有很多不同
在这种情况下,我认为最大的区别是它是否接受NULL。
请参阅:
-C++中的指针变量和引用变量之间有什么区别
-在C++中,通过指针传递比通过引用传递有好处吗
-指针和引用参数之间的区别?
相关文章:
- C++复杂情况的比较器通过参数问题
- C++17 中的歧义错误(模板模板参数和默认参数问题)
- C 缺少模板参数问题
- C++ pcap_loop() 参数问题
- 带有指针作为参数问题的 C++ 函数
- C++ 奇怪的字符*参数问题(不兼容的类型)
- JNA 参数问题:内存访问无效
- Qt样式表和"一个参数"问题
- 默认参数问题 (c++)
- 具有可变模板的递归继承和继承参数问题
- 命令行参数问题
- OpenCV 决策树参数问题
- winapi GetProcessMemoryInfo 无效参数问题
- 参数问题?至少我认为是这样
- 构造函数参数问题C++
- c++教程参考参数问题
- c++多线程参数问题
- Clang Format多行函数声明参数问题
- 提升Python - 具有默认参数问题的重载函数
- VBA Excel DLL参数问题-第6个参数