【问题标题】:Beginner C++ pointer初学者 C++ 指针
【发布时间】:2016-03-17 10:10:34
【问题描述】:

我正在阅读一个代码 sn-p,我看到了这个

FILE * infile = fopen("input.wav","rb");

我想在这里问 2 个问题。

  1. 这里的FILE 是什么。它是一个类、对象还是其他任何东西。

  2. infile 指向什么。我已经看到了指向int, char 等的指针。但那是什么意思。

【问题讨论】:

  • FILE 类型,能够保存控制 C I/O 流所需的所有信息”(参见 en.cppreference.com/w/c/io)。 infile 指向 FILE
  • 这里的类型是什么?是不是像一个变量
  • 类型是事物的类型。 int 是一个类型,char 是一个类型,FILE 是一个类型。
  • 刚刚用谷歌搜索:cplusplus.com/reference/cstdio/FILE
  • 我投票决定将此问题作为题外话结束,因为它的质量极低,根本没有表现出任何努力!

标签: c++ class pointers object


【解决方案1】:

这里的文件是什么。它是一个类、对象还是其他任何东西?

  • FILE 是一个对象,用于标识流并包含控制它所需的信息,即位置指示符、指向缓冲区的指针和所有状态指示符。

  • fopen 返回一个指向 FILE 对象的指针。

  • FILE 对象的内存分配是自动管理的,也就是说,当使用 fclose 关闭流(或程序终止时)释放资源是库的责任通常)。

  • 如果包含头文件,这三个FILE对象会自动创建:

    1. stdin:标准输入流
    2. stdout:标准输出流
    3. stderr:标准错误流

infile 指向什么。我已经看到了指向 int、char 等的指针。但是那指向什么?

它指向那个 FILE 对象。

如果您想从该文件指针中读取,请执行以下操作:

if (infile == NULL) perror ("Error opening file");
else { /* read */ }

【讨论】:

    【解决方案2】:
    FILE
    

    包含stdio.h中的文件信息的结构

    infile
    

    指向fopen返回的对象,其类型为FILE

    【讨论】:

      【解决方案3】:
      1. FILE是一个来自C的类型,它是一个struct,用于控制文件的输入和输出。它包含有关所处理文件的信息,某些专门处理文件的 C 函数使用它作为返回类型或参数来了解它们正在处理的内容。

      2. infile 指向由fopen 创建的FILE 类型的对象,其中包含有关您刚刚打开的文件input.wav 的信息。

      【讨论】:

      • 为什么 FILE 是大写字母。我从未见过大写字母的结构。你能解释一下吗
      • @PawandeepSingh 因为有人决定将其命名为全部大写。没有什么能阻止您创建结构/类/类型别名/变量/等,以所有大写字母命名。
      【解决方案4】:

      FILE 是包含用于控制流的信息的对象,当您想要在 c++ 中处理文件(fopen、fclose)时使用它。 “infile”指针,指向fopen将放置“input.wav”的内存地址。

      【讨论】:

        【解决方案5】:
        1. FILEinfile 指向的对象的类型。
        2. infile 指向 FILE 类型的对象(由 fopen() 重新调整)

        【讨论】:

        • FILE 不是一个类,它是一个struct
        • @Gill Bates 我也刚刚意识到 :)
        • @GillBates 很好,在 C++ 关键字中 struct 声明了类,所以他在技术上是正确的。
        【解决方案6】:

        文件 是一种对象类型,用于标识流并包含控制流所需的信息,包括指向其缓冲区的指针、位置指示器和所有状态指示器。

        参考:http://www.cplusplus.com/reference/cstdio/FILE/

        文件 指向这个对象的起始地址,在内存中

        【讨论】:

          【解决方案7】:

          正如其他人指出的那样

          1。 FILE 是一个结构。简而言之,struct 是一种数据类型

          2.infile 是 FILE 类型的指针,它指向一个音频文件,该文件现在将在 1 和 0 中,具体取决于您用于提取数据的变量类型,流将根据该数据进行例如,如果你使用 int 它将移动 4 个字节,如果你使用 char 它将移动 1 个字节。

          ps 我不建议使用 .wav 来理解概念,制作一个简单的 txt 并尝试提取 chars 字符串 int 和内容

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 1970-01-01
            • 2011-02-04
            • 2013-03-24
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2012-03-03
            • 2010-09-28
            相关资源
            最近更新 更多