02 指针的定义和使用
如何定义一个指针:
指针定义的语法:数据类型 * 指针变量名称
。
#include <iostream>
using namespace std;
int main()
{
int a = 10;
int* p; //创建了指针的变量
p = &a; //让指针获取a
cout << "a的地址是:" << (int)& a << endl;
cout << "指针p是:" << (int)p << endl;
system("pause");
return 0;
}
结果:(环境:Windows11 (arm/Apple M VM)/Visual Studio 2022/Debug/arm64)
a的地址是:-594543228
指针p是:-594543228
请按任意键继续. . .
首先,要创建变量。其次,创建指针的时候,创建和变量相同的指针类型。在让指针获取到原来变量的地址。
获取地址的方式:添加取址符:&
比如说变量 a,它的地址就可以用:&a
获取。
如何使用一个指针
使用指针可以通过解引用的方式来找到指针指向的内存。
语法:* 指针的变量名称
* 指针的变量名称
代表解引用,找到指向的内存中的数据。
#include <iostream>
using namespace std;
int main()
{
int a = 10;
int* p;
p = &a;
cout << "a的值是:" << a << endl;
cout << "a的地址是:" << (int)& a << endl;
cout << "指针p是:" << (int)p << endl;
*p = 1000;
cout << "a的值是:" << a << endl;
cout << "*p的值是:" << *p << endl;
system("pause");
return 0;
}
运行结果:
a的值是:10
a的地址是:-893387484
指针p是:-893387484
a的值是:1000
*p的值是:1000
请按任意键继续. . .
会发现,修改的是*p
,但是 a 的值也被改了。这就是指针。用于间接的访问一块内存。这块内存(如上面的例子)对应的是a
,那么*p
其实也是 a
。
其中,可以注意一下:
int* p;
p = &a;
这样的代码可以直接使用如下替换。
int* p = &a;
:-)