您的位置:首页 > 其它

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

2011-11-23 23:54 369 查看


指针:

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

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

指针变量:

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

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

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

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

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

int*pointer和pointer是一个意思,就是指针变量,只是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地址。

花了一个多小时总结的,看了下老谭的书,希望对大家有帮助,有小错误的地方请指出,谢谢
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐