用代码举三个例子帮忙理解指针
时间: 2024-03-08 12:50:03 浏览: 61
C/C++ 指针
好的,下面我来举三个例子帮助理解指针。
1. 指针作为函数参数传递
指针最常见的用法之一是作为函数参数传递。这种用法可以实现对函数外部变量的修改,比如:
```c++
#include<iostream>
using namespace std;
void swap(int* a, int* b)
{
int temp = *a;
*a = *b;
*b = temp;
}
int main()
{
int a = 1, b = 2;
cout << "before swap: a = " << a << ", b = " << b << endl;
swap(&a, &b);
cout << "after swap: a = " << a << ", b = " << b << endl;
return 0;
}
```
在这个例子中,我们定义了一个`swap()`函数,它接受两个指向整型变量的指针作为参数。函数内部通过指针操作来交换变量的值,从而实现了对函数外部变量的修改。
2. 指针作为数组名
指针还可以被用来表示数组名。当我们定义一个数组时,实际上是在内存中开辟了一段连续的空间,并将数组名指向这段空间的首地址。因此,我们可以通过指针对数组进行访问,比如:
```c++
#include<iostream>
using namespace std;
int main()
{
int arr[5] = {1, 2, 3, 4, 5};
int* p = arr; // 指针指向数组首地址
for(int i=0; i<5; i++)
{
cout << *(p+i) << " "; // 输出数组元素
}
return 0;
}
```
在这个例子中,我们定义了一个包含5个元素的整型数组`arr`,并将指针`p`指向了数组的首地址。然后我们使用指针对数组进行访问,输出了数组中的所有元素。
3. 动态内存分配
指针还可以用于动态内存分配。动态内存分配是指程序在运行时根据需要申请一定大小的内存空间,以供程序使用。在C++中,可以使用`new`操作符来实现动态内存分配,比如:
```c++
#include<iostream>
using namespace std;
int main()
{
int* p = new int; // 动态申请一个整型变量的内存空间
*p = 1; // 对动态申请的内存空间进行赋值
cout << *p << endl; // 输出动态申请的内存空间的值
delete p; // 释放动态申请的内存空间
return 0;
}
```
在这个例子中,我们使用`new`操作符动态申请了一个整型变量的内存空间,并将其赋值为1。然后我们输出了这个内存空间的值,并使用`delete`操作符释放了这个内存空间。
阅读全文