学习C++指针用法,快速掌握赋值技巧

C++中,指针是一种特殊的基本数据类型,通常用来存储变量的地址。指针变量在使用前需要进行合法初始化,否则会导致运行时错误。指针的使用需要掌握一些技巧,这篇文章将从多个方面介绍指针的用法。

一、使用指针访问变量

使用指针可以直接访问变量的值,可以通过指针来操作存储在内存中的变量。代码示例:

#include <iostream>
using namespace std;

int main() {
    int a = 10;
    int* p = &a; //p指向a的地址

    *p = 20; //通过指针p修改a的值

    cout << a << endl; //输出20

    return 0;
}

在上述代码中,首先定义了一个整型变量a,并将其初始化为10。然后,定义了一个指向整型变量的指针p,并将其初始化为a的地址。最后,通过*p修改了a的值为20,并且输出结果为20。

二、指针的运算

对指针进行加、减运算可以实现指针在内存中“跳跃”访问变量的功能,指针的加、减运算会根据数据类型自动进行偏移操作。代码示例:

#include <iostream>
using namespace std;

int main() {
    int a[5] = {1, 2, 3, 4, 5};
    int* p = a; //p指向a数组的第一个元素

    for (int i = 0; i < 5; i++) {
        cout << *p << " "; //输出当前指针指向的值
        p++; //指针后移
    }

    return 0;
}

在上述代码中,定义了一个包含5个元素的整型数组a,并且定义了一个指向整型变量的指针p,并将其初始化为a的地址。接着,利用for循环遍历数组a,并依次通过指针p输出当前指针指向的元素,最后指针p后移一个单位。

三、指针的比较

使用指针还可以比较两个指针变量的大小关系,指针的比较需要比较指向的内存地址是否相同。代码示例:

#include <iostream>
using namespace std;

int main() {
    int a = 10;
    int b = 20;

    int* p1 = &a;
    int* p2 = &b;

    cout << boolalpha < p2) << endl; //输出false

    return 0;
}

在上述代码中,定义了两个整型变量a和b,并分别定义了指向这两个变量的指针p1和p2。由于p1指向的变量a的地址小于p2指向的变量b的地址,所以输出的结果为false。

四、指针的类型转换

指针的类型转换常常用于一些特殊的场合。类型转换可以将不同类型的指针互相转换,并且不同类型之间的指针赋值需要进行类型转换。代码示例:

#include <iostream>
using namespace std;

int main() {
    double a = 3.1415926;
    int* p = (int*)&a; //将double类型的指针转换为int类型的指针

    cout << *p << endl; //输出整型结果为3

    return 0;
}

在上述代码中,定义了一个双精度浮点型变量a,并将其初始化为3.1415926。然后,将a的地址转换为整型指针,并通过*p输出结果为3。

五、指针的常量和常量指针

在C++中,指针本身可以是常量,也可以指向常量,这些不同的情况会影响到指针的赋值以及指针所指向的对象的可变性。代码示例:

#include <iostream>
using namespace std;

int main() {
    int a = 10;
    const int b = 20;

    int* const p1 = &a; //p1是一个常量指针,指向a的地址
    const int* p2 = &b; //p2是一个指向常量的指针,指向b的地址

    *p1 = 30; //可以修改a的值
    cout << *p1 << endl; //输出30

    //不能修改p1的值,以下代码会报错
    //p1 = &b;  

    //不能修改p2指向的值,以下代码会报错
    //*p2 = 40;

    p2 = &a; //可以修改p2指向的地址,使其指向a

    return 0;
}

在上述代码中,首先定义了一个整型变量a和一个常量整型变量b。然后,定义了一个常量指针p1,使其指向a的地址,并且定义了一个指向常量的指针p2,使其指向b的地址。在p1和p2的赋值和修改中,p1不能改变其指向的地址,p2不能修改其指向地址指向变量的值。

六、指针的引用和指针的指针

指针的引用是将一个指针变量的地址作为另一个指针变量的值。指针的指针是指一个指向指针的指针变量,指针的指针常常用于传递指针的地址。代码示例:

#include <iostream>
using namespace std;

int main() {
    int a = 10;
    int* p1 = &a; //定义一个指向a的指针
    int** p2 = &p1; //定义一个指向指针p1的指针

    **p2 = 20; //通过指针p2修改a的值

    cout << a << endl; //输出20

    return 0;
}

在上述代码中,首先定义了一个整型变量a和一个指向a的指针p1,然后定义了一个指向指针p1的指针p2。接着,通过指针p2修改了a的值为20,并且输出结果为20。

七、总结

本文从访问变量、指针的运算、指针的比较、指针的类型转换、指针的常量和常量指针、指针的引用和指针的指针等多个方面介绍了C++指针的用法和技巧。掌握这些指针的用法,对于C++程序设计的进阶和深入学习都是十分重要的。

原创文章,作者:小蓝,如若转载,请注明出处:https://www.506064.com/n/242332.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
小蓝小蓝
上一篇 2024-12-12 12:48
下一篇 2024-12-12 12:48

相关推荐

  • 使用vscode建立UML图的实践和技巧

    本文将重点介绍在使用vscode在软件开发中如何建立UML图,并且给出操作交互和技巧的指导。 一、概述 在软件开发中,UML图是必不可少的重要工具之一。它为软件架构和各种设计模式的…

    编程 2025-04-29
  • Ojlat:一款快速开发Web应用程序的框架

    Ojlat是一款用于快速开发Web应用程序的框架。它的主要特点是高效、易用、可扩展且功能齐全。通过Ojlat,开发人员可以轻松地构建出高质量的Web应用程序。本文将从多个方面对Oj…

    编程 2025-04-29
  • 指针Python:为什么Python中不需要使用指针?

    在Python中,指针的使用不像其他语言一样那么常见。这是因为Python有自己的内存管理方式,所以在大多数情况下,不需要显式地使用指针。那么,为什么Python中不需要使用指针呢…

    编程 2025-04-29
  • 二阶快速求逆矩阵

    快速求逆矩阵是数学中的一个重要问题,特别是对于线性代数中的矩阵求逆运算,如果使用普通的求逆矩阵方法,时间复杂度为O(n^3),计算量非常大。因此,在实际应用中需要使用更高效的算法。…

    编程 2025-04-28
  • Python文件路径赋值

    Python中文件操作是非常基本的操作,而文件路径是文件操作的前提。本文将从多个方面阐述如何在Python中赋值文件路径。 一、绝对路径和相对路径 在Python中,路径可以分为绝…

    编程 2025-04-28
  • 优秀周记1000字的撰写思路与技巧

    优秀周记是每个编程开发工程师记录自己工作生活的最佳方式之一。本篇文章将从周记的重要性、撰写思路、撰写技巧以及周记的示例代码等角度进行阐述。 一、周记的重要性 作为一名编程开发工程师…

    编程 2025-04-28
  • 如何使用Python将输出值赋值给List

    对标题进行精确、简明的解答:本文将从多个方面详细介绍Python如何将输出的值赋值给List。我们将分步骤进行探讨,以便读者更好地理解。 一、变量类型 在介绍如何将输出的值赋值给L…

    编程 2025-04-28
  • Python中赋值运算符和相等运算符解析

    Python是一种高级编程语言,它通常被用于开发 Web 应用程序、人工智能、数据分析和科学计算。在Python中,赋值运算符和相等运算符是非常常见和基本的运算符,它们也是进行编程…

    编程 2025-04-28
  • Python中赋值种类

    本篇文章将从多个方面对Python中赋值种类做详细的阐述,包括普通赋值、序列解包赋值、链式赋值、增量赋值和全局赋值。 一、普通赋值 普通赋值是Python中最基础的赋值操作,通过等…

    编程 2025-04-28
  • Python同步赋值语句的使用方法和注意事项

    Python同步赋值语句是Python中用来同时为多个变量赋值的一种方法。通过这种方式,可以很方便地同时为多个变量赋值,从而提高代码的可读性和编写效率。下面从多个方面详细介绍Pyt…

    编程 2025-04-28

发表回复

登录后才能评论