Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/124.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 通过参考资料?_C++ - Fatal编程技术网

C++ 通过参考资料?

C++ 通过参考资料?,c++,C++,在下面的代码中,我不理解这两个版本之间的区别。在这两种情况下,我(我认为)都是通过引用来完成一段文章的 此外,我不明白为什么版本2可以工作,因为就我目前的理解而言,符号&允许我给出一个变量的地址,所以当我输入函数名(int&yourInt)时,我从技术上要求用户输入int的地址?所以我应该像调用函数\u name(&myInt)那样调用它?但是在这里我们调用类似于function\u name(myInt)的函数 第1版: int值(int选项卡[],int*valeur) { 对于(int i

在下面的代码中,我不理解这两个版本之间的区别。在这两种情况下,我(我认为)都是通过引用来完成一段文章的

此外,我不明白为什么版本2可以工作,因为就我目前的理解而言,符号
&
允许我给出一个变量的地址,所以当我输入
函数名(int&yourInt)
时,我从技术上要求用户输入
int
的地址?所以我应该像调用
函数\u name(&myInt)
那样调用它?但是在这里我们调用类似于
function\u name(myInt)
的函数

第1版:

int值(int选项卡[],int*valeur)
{
对于(int i=0;i<5;i++)
{
*valeur+=制表符[i];
}
返回*valeur;
}
int main()
{
int检验=0;
int tab[10]={1,2,3,4,5};

std::cout当
&
字符是类型声明的一部分时,这意味着变量是对另一个的
引用。因此,在第二个函数中,
int&valeur
声明一个名为
valeur
的变量,该变量是对
int
的引用。这个示例应该有助于您理解:

#include <iostream>
int main() {
  int a = 5;
  int& b = a; // b is a reference to a
  std::cout << a << '\n'; // outputs 5
  std::cout << b << '\n'; // outputs 5
  a = 7;
  std::cout << a << '\n'; // outputs 7
  std::cout << b << '\n'; // outputs 7
}
#包括
int main(){
INTA=5;
int&b=a;//b是对a的引用

std::cout在第一个示例中,
value
将指向int的指针作为第二个参数。指针用于保存内存地址,因此必须使用address操作符(
&
)调用函数,传递
test
的地址

在第二个示例中,
value
将对int的非常量引用作为第二个参数,因此这次不需要传递
test
的内存地址。发生的情况几乎相当于这样的情况:

int test = 0;
int& valeur = test;
所以记住,地址操作符:

int test;
std::cout << &test; // outputs address of "test" in memory

第一个程序使用指针而不是引用。引用和指针是不同的东西,但是有些程序(像你的)可以用引用和指针同样好地编写。非常感谢!
int test;
int& valeur = test; // here, the type of "valeur" is "int&"