【C++】指针和引用

在这里插入图片描述

上期回顾: 【C++】内存管理和内存优化
个人主页:C_GUIQU
归属专栏:C++

在这里插入图片描述

正文

1. 指针

1.1 指针的基本概念

指针是一种变量,它存储的是另一个变量的内存地址。通过指针,可以间接访问和操作其所指向的变量。

1.2 举例

#include <iostream>

int main() {
   
   
    int num = 10;  // 定义一个整型变量num,初始值为10

    int *ptr;  // 定义一个指向整型的指针ptr,此时它未指向任何有效的内存地址

    ptr = &num;  // 将指针ptr指向变量num的地址,&是取地址运算符

    std::cout << "num的值为:" << num << std::endl;
    std::cout << "num的地址为:" << &num << std::endl;
    std::cout << "ptr指向的值为:" << *ptr << std::endl;  // *是解引用运算符,用于获取指针所指向的值
    std::cout << "ptr的地址为:" << &ptr << std::endl;

    return 0;
}

在上述代码中:

  • 首先定义了一个整型变量 num 并赋值为 10
  • 接着定义了一个整型指针 ptr,开始它未指向任何有效地址。
  • 通过 ptr = &num;ptr 指向了 num 的地址。
  • 然后分别输出了 num 的值、地址,ptr 指向的值(通过解引用 *ptr)以及 ptr 自身的地址。

1.3 指针的运算

指针可以进行一些特定的运算,常见的有算术运算和关系运算。

1.3.1 算术运算

  • 指针的加法和减法运算通常与它所指向的数据类型的大小相关。例如,对于一个指向整型(int)的指针,如果执行 ptr++,那么指针会移动到下一个整型数据的地址,实际上是在内存地址上增加了 sizeof(int) 个字节。

示例代码:

#include <iostream>

int main() {
   
   
    int arr[5] = {
   
   1, 2, 3, 4, 5};
    int *ptr = arr;  // 让指针ptr指向数组arr的首地址

    std::cout << "ptr指向的元素为:" << *ptr << std::endl;

    ptr++;  // 指针向后移动一个元素的位置

    std::cout << "ptr指向的元素为:" << *ptr << std::endl;

    return 0;
}

在这个例子中,数组 arr 包含了 5 个整型元素。指针 ptr 初始指向数组的首地址,即 arr[0] 的地址。当执行 ptr++ 后,指针就指向了 arr[1] 的地址,通过解引用就可以获取到 arr[1] 的值。

1.3.2 关系运算

  • 指针可以进行比较运算,如 ==!=<> 等。通常用于判断两个指针是否指向同一个地址,或者判断一个指针是否在某个地址范围之内。

示例代码:

#include <iostream>

int main() {
   
   
    int num1 = 10;
    int num2 = 20;
    int *ptr1 = &num1;
    
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Guiat

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值