谈谈指针和引用的区别?

本文探讨了C++中引用的概念,强调了引用本质上是不可修改的指针常量,与指针的不同之处在于引用必须初始化且不能为NULL。它在使用时无需解引用,但其内存单元大小与所引用变量相同而非指针自身。
摘要由CSDN通过智能技术生成

引用是给变量 起别名的,内部实现是 指针常量(int* const ref=&a),本体指针存放的是 变量的地址

引用的本质是 指针常量,指向 不可修改,指针 可以改变指向

引用创建的同时必须 初始化,指针可以 不初始化

引用 不能为空,指针可以为 NULL

引用使用的时候 无需解引用,指针 需要解引用

指针和引用 自增/自减运算 意义不一样

引用变量 ref 的内存单元保存的是 被引用变量a的地址 sizeof(引用)=指向 变量的大小 sizeof(指针)=指针 本身的大小

  • 3
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
C++中,`read()`和`write()`是用于二进制数据读写的成员函数,可以用于从文件中读取数据或将数据写入到文件中。这两个函数是通过文件流对象调用的。 下面是关于`read()`和`write()`的一些重要信息: 1. `read()`函数定义:`istream& read(char* buffer, streamsize count);` `read()`函数用于从输入流中读取二进制数据,并将其存储到指定的字符数组(buffer)中。它接受两个参数:一个字符数组指针(buffer)和要读取的字节数(count)。 2. `write()`函数定义:`ostream& write(const char* buffer, streamsize count);` `write()`函数用于将指定的二进制数据写入到输出流中。它接受两个参数:一个常量字符数组指针(buffer)和要写入的字节数(count)。 3. `read()`函数的返回值:`istream&` `read()`函数返回一个输入流对象的引用,可以用于链式调用其他输入操作。 4. `write()`函数的返回值:`ostream&` `write()`函数返回一个输出流对象的引用,可以用于链式调用其他输出操作。 下面是一个简单的示例,展示了如何使用`read()`和`write()`函数进行二进制数据的读写: ```cpp #include <iostream> #include <fstream> int main() { // 写入二进制数据 std::ofstream outfile("data.bin", std::ios::binary); // 创建输出文件流对象,并打开文件 if (outfile.is_open()) { int data[] = {1, 2, 3, 4, 5}; // 要写入的数据 int dataSize = sizeof(data); // 数据的字节数 outfile.write(reinterpret_cast<const char*>(data), dataSize); // 将数据写入文件 outfile.close(); // 关闭文件 } else { std::cerr << "Failed to open the file." << std::endl; } // 读取二进制数据 std::ifstream infile("data.bin", std::ios::binary); // 创建输入文件流对象,并打开文件 if (infile.is_open()) { const int bufferSize = 5 * sizeof(int); // 缓冲区大小 char buffer[bufferSize]; // 缓冲区 infile.read(buffer, bufferSize); // 从文件中读取数据到缓冲区 int* data = reinterpret_cast<int*>(buffer); // 将字符数组转换为整数数组 for (int i = 0; i < bufferSize / sizeof(int); i++) { // 输出读取的数据 std::cout << data[i] << " "; } std::cout << std::endl; infile.close(); // 关闭文件 } else { std::cerr << "Failed to open the file." << std::endl; } return 0; } ``` 在上述代码中,首先使用`std::ofstream`对象创建输出文件流对象,并以二进制模式打开名为"data.bin"的文件。然后,我们创建一个整数数组`data`并将其写入到文件中,使用`write()`函数将数据写入文件。 接下来,我们使用`std::ifstream`对象创建输入文件流对象,并以二进制模式打开同样的文件。我们创建一个字符数组缓冲区`buffer`,并使用`read()`函数从文件中读取数据到缓冲区。 然后,我们将字符数组缓冲区转换为整数数组`data`,并遍历输出读取的数据。 通过使用`read()`和`write()`函数,我们可以在C++中进行二进制数据的读写操作,以实现更灵活和高效的数据处理。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值