📜  C C++中指针的功能和使用(1)

📅  最后修改于: 2023-12-03 14:59:35.816000             🧑  作者: Mango

C/C++中指针的功能和使用

概述

指针是一个变量,其值为某个存储单元的地址。可以通过指针访问该存储单元。指针变量对程序的性能和灵活性有着极大的影响。在C/C++中,指针提供了许多灵活的操作,如动态内存分配、数据结构的创建和更改、函数参数的传递等。

定义指针变量

在C/C++中,声明指针需要在变量名前加上星号(*)。例如:

int* ptr; // 声明一个指向整数的指针变量ptr

在上面的例子中,ptr被声明为指向整数的指针变量。可以通过指针访问整数的值,如下所示:

int num = 5;
int* ptr = # // 将指针ptr指向变量num的地址
cout << *ptr;    // 输出5

在第二行,将ptr指向变量num的地址。在第三行,通过星号(*)访问ptr指向的变量的值,输出5。

指针的操作
取地址(&)

指针需要指向某个存储单元的地址,可以使用取地址运算符(&)获得变量的地址。例如:

int num = 5;
int* ptr = &num; // 将指针ptr指向变量num的地址

在第二行,将ptr指向变量num的地址。&运算符返回变量num的内存地址,ptr保存该地址。

访问指针变量的值(*)

可以使用星号(*)访问指针变量指向的数据。例如:

int num = 5;
int* ptr = &num; // 将指针ptr指向变量num的地址
cout << *ptr;    // 输出5

在第三行,星号(*)访问ptr变量指向的数据,输出5。

指针的运算

指针可以进行加、减、自增和自减等运算。这些运算的效果是将指针向前或向后移动若干个单位,单位的大小取决于指针所指向变量的类型。例如:

int arr[5] = {1, 2, 3, 4, 5};
int* ptr = arr; // 将指针ptr指向数组arr的首元素

for(int i = 0; i < 5; i++) {
    cout << *ptr << ", ";
    ptr++; // 移动指针一个单位
}

// 输出1, 2, 3, 4, 5

在上面的例子中,将指针ptr指向数组arr的首元素。在循环中,遍历数组,并使用星号(*)访问当前元素的值,输出结果。在每次循环结束时,指针ptr移动到数组的下一个元素。

指针与数组

指针可以与数组配合使用。例如:

int arr[5] = {1, 2, 3, 4, 5};
int* ptr = arr; // 将指针ptr指向数组arr的首元素

for(int i = 0; i < 5; i++) {
    cout << *ptr << ", ";
    ptr++; // 移动指针一个单位
}

在上面的例子中,将指针ptr指向数组arr的首元素。在循环中,使用星号(*)访问当前元素的值,并将指针向后移动一个单位。因为指针可以被看作一个数组,所以如果我们将指针作为参数传递给函数,它可以像数组一样使用。

动态内存分配

指针的一个最重要的功能是动态内存分配。程序员可以使用深度学习算法和其他大数据应用的高层内存管理。例如:

int* ptr = new int[5]; // 动态分配长度为5的整型数组
for (int i = 0; i < 5; i++) {
    *(ptr + i) = i;
    cout << *(ptr + i) << ", ";
}

在上面的例子中,使用new运算符动态分配长度为5的整型数组。在循环中,遍历数组,并将每个元素的值设置为其索引。然后,将每个元素的值输出到屏幕上。最后,使用delete运算符释放数组占用的内存,如下所示:

delete [] ptr; // 释放指针ptr指向的数组的内存
总结

本文介绍了指针在C/C++中的使用方法。指针提供了许多灵活的操作,如动态内存分配、数据结构的创建和更改、函数参数的传递等。程序员应当了解这个重要的概念,以更好地掌握C/C++。