指针是C++语言中广泛使用的一种数据类型,运用指针编程是C++语言最主要风格之一。利用指针变量可以表示各种数据结构,能很方便得使用数组和字符串,并能像汇编语言一样处理内存地址,从而编出精炼而高效的程序,指针极大地丰富了C++语言的功能。学习指针是学习C++语言最重要的一环,能否正确理解和使用指针是我们是否掌握C++语言的一个标准。
一:指针变量的定义、赋值
指针变量定义的一般形式
类型说明符 *变量名;
指针变量的初始化的方法:
1.
int a;
int *p=&a
2.
int a;
int *p;
p=&a;
详细解释如图:
指针变量同普通变量一样,使用之前不仅要定义说明,而且必须被赋予具体的值,未经赋值的指针变量不能使用。
二:指针的引用与运算
对应关系
初始化方法
三:代码样例:
1,输入两个不同的数,通过指针进行加法和乘法运算.
#include<iostream>
using namespace std;
int main()
{
int a,b;
int *za,*zb;
za=&a,zb=&b;
cin>>a>>b;
int x=*za+*zb;
int y=*za**zb;
cout<<*za<<" "<<*zb<<endl;
cout<<za<<" "<<zb<<endl;
cout<<"a*b="<<y<<endl;
cout<<"a+b="<<x;
return 0;
}
样例:
输入:
10 20
输出:
10 20
0x68feec 0x68fee8
a*b=200
a+b=30
0x68feec 0x68fee8
a*b=200
a+b=30
2,输入N个整数,使用指针变量访问输出
#include<iostream>
using namespace std;
int a[101];
int main()
{
int n;
cin>>n;
for(int i=0;i<n;++i)
cin>>a[i];
int *p;
p=&a[0];
for(int i=0;i<n;++i)
{
cout<<*p;
++p;
}
return 0;
}
样例:
输入:
10
9 8 7 6 5 4 3 2 1 0
输出:
9876543210
说明:"p++"的意思是"广义的加1",不是p的值(地址)加1,而是根据类型int增加sizeof(int),即刚刚好"跳过"一个整形的空间,达到下一个整数.
类似的: "p--"表达跳过一个整数空间,达到前一个整数
3,无类型指针
#include<iostream>
using namespace std;
int main()
{
void *p;
int a;
cin>>a;
double b;
cin>>b;
long long c;
cin>>c;
float d;
cin>>d;
p=&a;
cout<<*(int*)p<<" "<<endl;
p=&b;
cout<<*(double*)p<<" "<<endl;
p=&c;
cout<<*(long long*)p<<" "<<endl;
p=&d;
cout<<*(float*)p<<" "<<endl;
return 0;
}
样例:
输入:
10
10
3.5
5
6.1
输出:
10
3.5
5
6.1
说明:必须明确p所指向的空间的数据类型,类型不一样的不仅仅空间大小不相同,储存的格式也不相同,如果把cout<<*(double*)p<<" "<<endl;换成 cout<<*(long long*)p<<" "<<endl;(地址未改变时)输出的结果将是4615063718147915776.
4.多重指针
样例
int a=10;
int *p;
p=&a;
int **P;
P=&p;