#指针变量的一些总结

指针变量的一些总结

Ⅰ 作用:利用指针,可以直接处理内存中各种数据结构的数据,特别是数组,字符串。灵活,正确运用指针,可以提高程序的执行效率,编写出精炼而高效的程序。

指针:就是地址,
指针变量:存放地址的变量,

指针变量必须先定义,后使用。
定义的一般形式为 : 数据类型标识符 *指针变量名;
int * p
double * d
char * pc
注意:1,指针变量数据类型必须与所赋值的变量类型一致;
如,float y; int * p; p=&y; (这是错的)
2,不允许把一个数(常量)赋予指针变量(指针变量只能存放变量地址)
如,int * p; p=333(错的)
3,被赋值的指针变量前不能再加 “ * ” 说明符,写为 * p=&a 这是错误的,但对于在定义指针的同时赋值是允许的,如,int * p=&a; 实际可分解为两步,int * p;p=&a;
4,可以将指针变量初始化为空值NULL,如,p=NULL;
5,同类型的指针变量可以相互赋值, int a,*pa=&a,*pb; pb=pa;

Ⅲ &,* 都是具有右结合性的单目运算符,且优先级相同,
在执行语句中出现,
&:表示取指针变量的地址;
*:表示取指针变量所指向的变量的值;
int *px,x,y,*p; px=&x; y=*px;

在变量定义中出现,
&:表示本语句定义一个引用,如:
int y; int &x=y;//定义x为变量y的引用;
*:表示本语句定义一个指针变量,如,
int *px;
注,&后面只能是一个变量或数组元素,不能是表达式;*后面只能是地址;

Ⅳ 辨别,&*P,&a, p,*p
由于,&, * 都是具有右结合性的单目运算符,且优先级相同,所以,& * p,先 * 与P结合,再执行&运算,因此,&*p=&a=p
p是表示变量a的地址,而,*p是表示变量a的值;

特殊的指针;
㈠指向常量的指针:声明指针时,可以使用const 指定,该指针指向的值不能改变。一般形式为,const 数据类型标识符 * 指针变量名;或者:数据类型标识符 const * 指针变量名。即,使用该指针时,可以改变指向,但,不能通过该指针改变所指目标的值。例:
int s=23,d=24;
const int *p=&s;
*p=90; //错误,这种利用指向常量的指针改变它所指向的值的操作是错误的;但可以对s进行任意操作;
s=21; //正确
p=&d; //正确,可以改变指向,

注;普通指针不能指向常变量。指向常量的指针既能指向普通变量,也能指向常变量,而,普通指针只能指向普通变量,不能指向常变量。例:const int xn=8;
int *p;
P=&x; //错误
const int *q;
q=&x; //正确

㈡指针常量:一般形式,
数据类型标识符 *const 指针常量名=变量地址;例如:
int x;
int y=34;
int *const p=&x;
*p=12; //正确
p=&y; //错误
指针常量只能永远指向初始化时设定的目标,不能指向其他目标。但,由于x是个变量,所以,在程序中通过指针常量来修改所指目标值时允许的,即,“*p=12”是正确的。

㈢void类型的指针:一般形式:
void * 指针变量名;
可以将任意类型数据的地址赋给void类型的指针变量;经过强制类型转换,void类型指针可以访问任何类型的数据。
例,int a=123;
int *p1;
void *p2;
p2=&a; //将int类型变量a 赋给p2
p1=(int *)p2; //经过强制转换,将p2赋值给p1

㈣二级指针:存放着另一个指针变量的地址,则称这个指针为二级指针变量。
定义形式,数据类型标识符 **二级指针变量名;例 :int a=22;
int *p=&a;
int **pp=&p;
**pp=1;
cout<<a;
输出a=1。

参考文献:《C/C++程序设计第二版》,主编:宋晓宇

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值