继续浏览精彩内容
慕课网APP
程序员的梦工厂
打开
继续
感谢您的支持,我会继续努力的
赞赏金额会直接到老师账户
将二维码发送给自己后长按识别
微信支付
支付宝支付

C++ 指针入门:掌握基础与应用

汪汪一只猫
关注TA
已关注
手记 614
粉丝 130
获赞 719

C++ 指针是程序设计中的重要概念,它允许程序员以更高层次的抽象来操作内存。通过指针,我们可以动态地管理内存、实现高效的算法设计、优化程序性能。理解指针不仅能够帮助我们编写更高效、灵活的代码,还能深入理解 C++ 的内存管理机制。本篇指南将逐步引导你从基础到应用,全面掌握 C++ 中指针的使用。

指针基础

定义与创建

在 C++ 中,指针是一种特殊的变量,用于存储另一个变量的内存地址。创建一个指针变量,首先要声明它的类型,然后可以初始化为一个有效的地址或 NULL。

#include <iostream>
using namespace std;

int main() {
    int num = 10; // 定义一个整数变量

    int* ptr; // 定义一个指向整数的指针
    ptr = &num; // 初始化指针为 num 的地址
    cout << "Address of num: " << &num << endl;
    cout << "Value pointed by ptr: " << *ptr << endl;
    return 0;
}

初始化和赋值

指针可以通过初始化或者动态分配内存后赋值来使用。

int main() {
    int num = 10; // 定义一个整数变量
    int* ptr = &num; // 声明并初始化指针为 num 的地址

    int a = 5;
    int* ptr2 = &a; // 直接初始化指针为 a 的地址

    return 0;
}

初始化空指针

在指针初始化时,可以立即赋予 NULL:

int main() {
    int* ptr = nullptr;
    if (ptr == nullptr) {
        cout << "Pointer is null." << endl;
    }
    return 0;
}

指针与变量

指针可以通过 * 操作符访问其引用的变量值。以下示例展示了如何通过指针修改整数变量的值:

int main() {
    int num = 10;
    int* ptr = &num;

    *ptr = 20; // 通过指针修改 num 的值
    cout << "Modified value: " << num << endl;

    return 0;
}

指针指向不同类型的变量

指针可以指向不同类型的变量,这被称为类型不匹配。以下例子展示了指针如何指向结构体变量:

struct Person {
    string name;
    int age;
};

int main() {
    Person person = {"John", 30};
    Person* personPtr = &person;

    cout << "Name: " << personPtr->name << endl;
    cout << "Age: " << personPtr->age << endl;
    return 0;
}
指针运算

指针支持加减运算,这有助于实现复杂的数据结构操作。

增减

使用加减运算符可以移动指针指向的地址:

int main() {
    int num = 10;
    int* ptr = &num;
    int* ptr2 = ptr + 1; // 移动到下一个地址
    cout << "Ptr moved: " << *ptr2 << endl;

    return 0;
}

指针与数组

通过指针,我们可以直接访问数组元素,而不需要通过数组名间接访问:

int main() {
    int arr[5] = {0, 1, 2, 3, 4};
    int* ptr = arr;

    cout << "Element at arr[1]: " << (*ptr)++ << endl;
    cout << "Element at ptr after increment: " << *ptr << endl;

    return 0;
}
动态内存管理

使用 newdelete 进行内存的动态分配和释放:

int main() {
    int* dynPtr = new int;
    *dynPtr = 42;
    cout << "Value: " << *dynPtr << endl;

    delete dynPtr;
    dynPtr = nullptr;

    return 0;
}
指针与数组的交互

指针可以用于遍历和操作数组元素,提高代码效率:

int main() {
    int arr[5] = {0, 1, 2, 3, 4};
    int* ptr = arr;

    for (; ptr < arr + 5; ptr++) {
        cout << *ptr << endl;
    }

    return 0;
}

通过上述示例和解释,你已经对 C++ 指针的基本概念、使用方法和一些高级应用有了深入的理解。掌握指针,不仅能让你写出更灵活、高效的代码,还能为深入学习更复杂的数据结构和算法打下坚实的基础。

打开App,阅读手记
0人推荐
发表评论
随时随地看视频慕课网APP