指针基础
指针可以完成对内存地址的操作
指针就是用来存储某个变量的内存地址
int a=100
int b=200
int* pa//表示声明一个指针,指针指向int类型
pa=&a//&a表示取得a变量的内存地址
这时候输出pa就是输出a的内存地址
*pa//表示取得后面(指针)内存地址所指向的数据
*pa=300
这时候输出a就是等于300
void* p1;//这个指针是指向空类型的指针,可以指向任意类型的地址
void* pl=&a;
但是输出 * pl 所指向的数据的时候需要强制转换成所需类型的指针才能输出
*((int*)pl)//代表强制转换成int类型的指针并输出所指向的数据
指针类型与引用类型
//指针* 引用符& reference 指针与引用使用上都是差不多的
int a=100;
int b=200;
int* p1=&a;//这时候输出p1是a的内存地址
int& r1=a;// 输出r1引用是a变量的数据也就是100.
r1=b;//相当于a=b,这时候输出r1,a都等于200
b=400;//这时候给b重新赋值400,不会更改a变量的值,a还是200.
void change(int a,int b)
{
a=100;
b=200
}
main()
{
a=0,b=0;
change(a,b);
//这时候输出a为0,b为0。因为他们是值类型
}
但是当a和b使用引用符的时候就不一样了
void change(int& a,int& b)
{
a=100;
b=200
}
main()
{
a=0,b=0;
change(a,b);
这时候输出a为1000,b为2000