【发布时间】:2014-09-26 04:18:52
【问题描述】:
我是 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);
它编译正确并给出了正确的输出...但我知道这两个调用是等效的...
那么为什么会出现这个错误呢?
在函数参数中使用 & 和 * 有什么区别?
【问题讨论】:
标签: c++ function pass-by-reference