为什么如果文件成功打开它会打印出内存地址,如果没有成功打开它会打印出零?

问题描述 投票:0回答:1

我正在尝试使用以下代码在 C++ 中打开一个文件:

#include <iostream>
#include <stdio.h>

int main()
{
    const char* filename = "database.txt";
    const FILE* fp = fopen(filename, "r+");
    
    //  If opened correctly, prints out a memory addr.
    //    if not, prints out 0.  
    std::cout << fp << std::endl;

    //  Check proper access
    if(!fp)
    {
        std::cout << filename;
        perror(" opening failed");
        return EXIT_FAILURE;
    }
}

要打开的文件名为

databases.txt
。如果找到并打开该文件,则变量
fp
会是堆栈中不同于 0 的某个地址。如果没有发生这种情况,
fp
恰好为 0,这就是
if
条件检查该值的原因。为什么会出现这种情况?为什么
fp
文件的名称是“分配的内存地址”?

c++ file memory
1个回答
0
投票

fopen()
返回指向 FILE 对象的
pointer
。您正在打印指针指向的“内存地址”。 如果 fopen() 失败,则返回
NULL
,打印为
0
    

最新问题
© www.soinside.com 2019 - 2025. All rights reserved.