📅  最后修改于: 2023-12-03 14:54:39.131000             🧑  作者: Mango
指针是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++程序员的必备技能。