例子①:取地址符
#include <iostream>
using namespace std;
int main()
{
int i;
cout<<&i<<endl; //获取变量i的内存地址
return 0;
}
【解释】:&是取地址符,可用来获取变量的地址。
例子②:定义一个指针
#include <iostream>
using namespace std;
int main()
{
int i; //定义一个变量
int *p; //定义一个变量p,*号说明这个p是一个指针。
p=&i; //把i变量的地质赋给指针p(注意只有指针才能接受地址)
cout<<"&i:"<<&i<<endl;
cout<<"*p:"<<p<<endl;
}
【解释】:输出结果是一样的。
例子③:
#include <iostream>
using namespace std;
int main()
{
int *p=0;
cout<<"*p"<<*p<<endl;
return 0;
}
【解释】:将指针初始化为0;
例子④:
#include <iostream>
using namespace std;
int main()
{
double a=3.14;
int b=6;
int *p1=&b;
double *p2=&a;
cout<<"p1:"<<p1<<endl; //这注意一下p1前不加*号
cout<<"p2:"<<p2<<endl;
p1++; //指针变量自加
p2++; //指针变量自加
cout<<endl;
cout<<"p1:"<<p1<<endl;
cout<<"p2:"<<p2<<endl; //多出了8个字节
return 0;
}
【解释】:指针与类型
例子⑤:也可以这样的
#include <iostream>
using namespace std;
int main()
{
int a;
int *p=&a;
cout<<&a<<endl;
cout<<p<<endl;
}
【解释】:输出结果一样..
例子⑥:知识点 注意!
#include <iostream>
using namespace std;
int main()
{
int a=1;
int *p;
p=&a;
cout<<*p<<endl; //注意这里!这里输出是a变量的值,也就是1
}
【解释】:输出结果为1
例子⑦:通过指针来访问值
#include <iostream>
using namespace std;
int main()
{
int a=1;
int *p;
p=&a;
cout<<"*p:"<<*p<<endl; //1
cout<<"p:"<<p<<endl; //2
cout<<"&a:"<<&a<<endl; //3
cout<<"a:"<<a<<endl; //4
}
【解释】:1和4的输出结果相同;2和3的输出结果相同
例子⑧:容易混淆
#include <iostream>
using namespace std;
int main()
{
int i;
int *p=0;
cout<<"i的内存地址为:"<<&i<<endl;
cout<<"p的地址为:"<<p<<endl;
cout<<"p的内存地址为:"<<&p<<endl;
i=3;
cout<<"i的内存地址为:"<<&i<<endl;
p=&i;
cout<<"p的值为:"<<p<<endl;
cout<<"p的内存地址为:"<<&p<<endl;
}
【解释】:指针变量本身也有内存地址的哦!
例子⑨:读取地址内容与读取内存地址的区别
#include <iostream>
using namespace std;
int main()
{
int a=1;
int *p=&a;
cout<<*p<<endl; //输出1
cout<<p<<endl;
}
【解释】:*p是读取该地址处的值,由于a赋值给p,故输出1。
例子⑽[推]:指针对数值的操作
#include <iostream>
using namespace std;
int main()
{
typedef unsigned short int ut;
ut i=5;
ut *p=0;
p=&i;
cout<<"i:"<<i<<endl;
cout<<"*p:"<<*p<<endl;
cout<<"用指针修改数据后的值为....\n";
*p=90; //这里注意一下!
cout<<"i:"<<i<<endl;
cout<<"*p:"<<*p<<endl;
cout<<"用i修改数据后的值为....\n";
i=9;
cout<<"i:"<<i<<endl;
cout<<"*p:"<<*p<<endl;
}
【解释】
例子⒒:把一个变量的地址赋予指向相同数据类型的指针变量
#include <iostream>
using namespace std;
int main()
{
int i;
int *p1;
int *p2;
p1=&i;
p2=p1;
cout<<p1<<endl;
cout<<p2<<endl;
}
【解释】:两次输出结果都是一样的!