详解一下C++语言的指针
时间: 2023-09-22 20:05:40 浏览: 118
C++中的指针是一个变量,其值为另一个变量的地址。 指针变量声明需要使用星号(*),而取地址运算符&用于获取变量的地址。指针有许多用途,包括动态分配内存、在函数之间传递参数以及访问数组和字符串。
下面是一些常见的指针操作:
1. 定义指针变量
定义一个指针变量需要使用星号(*),例如:
```
int *ptr;
```
这将定义一个名为ptr的指针变量,它可以指向一个整数值。
2. 获取变量的地址
获取变量的地址需要使用取地址运算符&,例如:
```
int var = 5;
int *ptr = &var;
```
这将把var的地址存储在ptr指针变量中。
3. 解引用指针
解引用指针意味着访问指针所指向的变量,需要使用星号(*),例如:
```
int var = 5;
int *ptr = &var;
// 解引用ptr指针并给变量赋值
*ptr = 10;
```
现在var的值为10,因为ptr指向var并通过解引用指针修改了它的值。
4. 动态内存分配
动态内存分配是指在运行时分配内存,需要使用new运算符,例如:
```
int *ptr = new int;
```
这将在堆上分配一块大小为sizeof(int)的内存,并返回其地址。可以使用delete运算符释放内存:
```
delete ptr;
```
5. 指针和数组
数组名本质上是一个指针,它指向数组的第一个元素,可以使用指针访问数组元素,例如:
```
int arr[5] = {1, 2, 3, 4, 5};
int *ptr = arr;
// 访问数组元素
cout << ptr[0] << endl; // 输出1
cout << ptr[1] << endl; // 输出2
```
6. 指针和函数
指针可以用于在函数之间传递参数,例如:
```
void swap(int *a, int *b) {
int temp = *a;
*a = *b;
*b = temp;
}
int main() {
int x = 5, y = 10;
swap(&x, &y);
cout << x << " " << y << endl; // 输出10 5
}
```
在swap函数中,a和b分别是指向x和y的指针。通过解引用指针可以交换它们的值。在主函数中,使用取地址运算符&将x和y的地址传递给swap函数。
这些只是指针的一些基本概念和操作,C++中的指针还有许多高级用法,例如指向函数的指针和指针数组,需要深入学习和掌握。
阅读全文