在c++中,我们可以用指针函数来操控内存中的变量,比如完成变量交换的功能,让我们一起看看。
swap实例代码
void swap(int &a, int &b) {
int temp = a;
a = b;
b = temp;
}
这和平常的函数没什么两……样?
这个函数的参数前面加了一个&。
void swap(int *a, int *b) {
int *temp = a;
a = b;
b = temp;
}
哈,这回加的是*号。
解释
指针
在c++中,我们定义一个变量就相当于在内存中划分了一块地方。
这个地方,是有名字的。
这个名字,就叫做地址。
那你想啊,如果能通过地址来完成什么for循环遍历啥的,那是不是就可以把整个计算机的数据都给调用出来。
所以,c++出现了指针的概念。
指针储存的是地址,我们可以使用一些指针操作符来获取数据,是一件很方便的事情。
我们可以用以下代码创建一个指针变量:
int *a;
这个*号是定义指针的时候必须要用的东西,大家记住就好,不用深究。
指针变量的类型取决于指向的变量是什么类型的,上面的例子就是指向一个int类型的变量。
指针操作符
指针定义好了,可是怎么获取地址呢?
使用&来获取变量的地址。
#include <iostream>
using namespace std;
int main() {
int a = 0; //定义变量
int *b = &a; //定义指针并且指向a的地址
return 0;
}
好了,如果我们想获取a的值怎么办。
使用指针操作符*来获取数据。
#include <iostream>
using namespace std;
int main() {
int a = 0; //定义变量
int *b = &a; //定义指针并且指向a的地址
cout << *b << endl; //使用*来获取数据
cout << b << endl; //错误,这样会直接打印地址
return 0;
}
现在知道指针怎么用了,让我们分析那两个函数吧!
函数解析
void swap(int &a, int &b) {
int temp = a;
a = b;
b = temp;
}
现在就好理解了。
由于a和b的指针属性,直接交换它们的值可以对传入的参数值进行交换。
就像这样:
swap(a, b);
void swap(int *a, int *b) {
int *temp = a;
a = b;
b = temp;
}
这个和上一个反过来,所以是一样的。
用法上应该传入地址
swap(*a, *b);
结束
byebye~
下一次我会讲模板类!