ifstream 函数 "get" 如何改变其字符参数?

How does the ifstream function "get" alters its character argument?

ifstream 的函数 get 读取下一个字符并将其存储在您传递给该函数的参数中。示例程序:

#include <iostream>     
#include <fstream>      

int main () {
  std::ifstream is("input.txt");     // open file
  char c;

  while (is.get(c))          // loop getting single characters
    std::cout << c;

  is.close();                // close file
  return 0;
 }

这很好用,但我很困惑 c 是如何被函数 get 改变的,因为它不是由它的指针传递的.前段时间有人告诉我,在函数内修改变量不能在函数外更改它的值。这就是指针的全部目的,对吧——操纵在函数外部创建的对象。那么c这里怎么改呢?

我想这里有明显的地方我不明白?

成员函数std::istream::get()使用引用:

istream& get (char& c);

这意味着函数直接访问作为参数传递的变量。

如果您不熟悉参考文献,here您可以了解更多信息。

"So how can c be changed here?"

reference documentation 开始 std::ifstream::get() 使用通过引用传递给 char 变量的参数

 basic_istream& get( char_type& ch );

所以它通过使用这个引用来改变它。