指针和指针变量的区别及取地址符的使用

 

图片

 

 指针:                                                                             

其实指针就是一个地址,是存放变量的地址。比如通过我的抽屉里放了一支笔,这支笔就是变量,我的抽屉就是存放变量的地址,也就是指针。还比如地址2000是变量i的储存单元,那么根据地址2000我们就可以访问地址为2000的变量i2000就是这个变量i的指针。

有个叫什么徐什么侠的所谓教授说什么只要变量前有个*就什么什么的叫它指针,唉,误人子弟,makes me sick,我们要鄙视那种不负责任的老师。

指针变量:

指针变量就是存放变量地址的变量,也就是存放指针的变量,比如我笔记本上写了我的抽屉里,笔记本就是指针变量,它存放了笔的地址抽屉,通过指向操作*,我也可以找到我的笔。(*是一个指向的操作)

 

 

比如   int*pointer 它是一个指针变量    它存放的是地址 2000,通过 *pointer 也就是指向操作,它可以找到i  把i赋值给pointer所指向变量,*pointer=i

等同于,我随便定义一个型   int*笔记本  它是一个指针变量   他存放的是地址是我的抽屉,通过  *笔记本这个指向操作,我可以找我的笔。因为变量笔赋值给笔记本所指向的变量,*笔记本=我的笔  就是这样

 

int*pointer是一个指针变量,它规定了它里面只能存放整形数据的地址,也就是说,我假如我刚才那int*pointer是存放的是地址2000,那么地址2000里存放的i必须是整形,就是这个意思。

 

变量i的地址是20002000i的指针,但是2000并不是i的指针变量,i的指针变量是int*pointer ,莫晕。

 

 

int*pointerpointer是一个意思,就是指针变量,只是int*pointer是定义的时候这么写的,意思是一样的,在定义的时候在int       pointer 里面加一个*的意思只是说明他是一个指针变量,假如就写成int  pointer ,那他成整形变量了,显然不行。比如  int a,和 a

意思也是一样的,只是定义的时候写成int a而已,都表示的是变量a

 

 

那么怎么把一个指针变量指向一个变量呢,我们知道指针变量里存放的是变量的地址,即指针,我们只要把变量的地址付给它就行了,比如要想让int*pointer指向 j,即,让*pointer=j,那么只要把j的地址付给int*pointer就行了,即pointer=&j ,就是这样

                           int  j=3;

                           int*pointer;

                           pointer=&j;

                           cout<<*Pointer;

 

结果就等于  3

                          

 

 

&是取地址的操作,大家都知道,刚才我们把j的地址赋值给了pointer,其实&*pointer&j是一样的,因为&*的优先级一样,所以从右向左结合,也就是取 *pointer的地址,因为先运算*pointer,也就是j,我们在对*pointer取地址就相当于是对取j地址。

 

 

 

花了一个多小时总结的,看了下老谭的书,希望对大家有帮助,有小错误的地方请指出,谢谢

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值