📜  指针在C C++中的应用(1)

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

指针在C/C++中的应用

指针是C/C++中最重要和最独特的概念之一。在C/C++中,指针是一种特殊类型的变量,用于存储内存地址。通过指针,我们可以间接地访问或修改一个变量的值,还可以动态地分配和管理内存。

定义和声明指针

在C/C++中,指针变量必须先被定义和声明,然后才能被使用。指针变量定义格式如下:

type *identifier;

其中,type是指针指向的数据类型,identifier是指针变量的名称。

例子:

int *p;  // 定义一个指向整数型数据的指针变量 p
double *q;  // 定义一个指向双精度型数据的指针变量 q
指针的赋值和引用

指针变量定义后,可以被赋予一个地址,并与该地址上的数据交互。指针的赋值可以通过以下方式进行:

identifier = &variable;

其中,variable是已经定义的普通变量,&是取地址符。

例子:

int num = 10;
int *p;
p = #  // p 指向 num 的地址

可以通过指针来引用指向的数据,如下所示:

*identifier

其中,*是指针解引用符。

例子:

int num = 10;
int *p;
p = #  // p 指向 num 的地址
cout << *p;  // 输出 p 所指向的 num 的值
指针的算术运算

指针还支持算术运算,它可以通过加上或减去一个整数值来移动指针所指向的地址。以下是常见的指针算术运算:

  • “+”与“-”:加上或减去一个整数值,得到新地址。
  • “++”与“--”:将指针加上或减去相应数据类型占用的字节数,得到新地址。

例子:

int arr[5] = {1, 2, 3, 4, 5};
int *p = arr;
cout << *(p + 2) << endl;      // 输出第三个元素 3
cout << *(p++) << endl;       // 输出第一个元素 1,并让指针加 1
cout << *(--p) << endl;       // 再次输出第一个元素 1,并让指针减 1
指针的应用

指针在C/C++中用途极大,以下是指针的常见应用场景:

动态内存分配和释放

指针可以用于动态分配和释放内存。动态分配的内存在程序结束后需要释放,否则会造成内存泄漏,这就需要用到 delete 关键字。

例子:

int *p = new int;  // 动态分配一个整型变量的内存
*p = 10;           // 修改该变量的值
delete p;          // 释放内存
数组访问和操作

指针可以用于数组的访问和操作。

例子:

int arr[5] = {1, 2, 3, 4, 5};
int *p = arr;
for (int i = 0; i < 5; i++) {
    cout << *(p + i) << endl;  // 输出数组的元素
}
函数指针

指针可以用于函数的传递和调用,这就是函数指针。

例子:

int add(int a, int b) {
    return a + b;
}

int main() {
    int (*p)(int, int);  // 定义一个函数指针 p
    p = add;             // 将 add 函数的地址赋给 p
    cout << p(1, 2) << endl;  // 输出 add(1, 2) 的结果
}
总结

指针是C/C++中最重要和最独特的概念之一,它可以用于动态内存分配和释放、数组访问和操作、函数指针等多种应用场景。掌握指针的基本概念和应用是成为一名优秀的C/C++程序员的必备技能。