*pointer是指针指向的一个值此时为2,這个值再自加1自然为3
pointer此时还指向值2,减2的含义是指针回退两个元素自然指向了值6。
指针本身有值表示它指向的地址,这个值可以运算表示对地址的修改。而指针指向的值其实就是位于这个地址所存的值。
在汇编以上层次的编程中内存实际上理解为地址和值就够叻,比如说指针值为100就相当于地址100(这实际上是一个基于基址的偏移),而说指针指向200时实质是说位于地址100的内存存储了200这个值。
再嶊广到函数的参数书上所谓的形参,变参什么的除了混淆是非没用,只要记好何时传地址或传值,就不会有什么问题
在内存中是找不到指针这种有形的东西的,如果我们把内存中某个位置存放的一个数值看成指针那这个值就是某个值所在的地址。到这个地址去找才能知道某个值的大小。到了下一个程序运行的时候这个位置存放的值的含义可能又变了。因此学语法是一个长期的过程,要能理解到为什么这样是合理的才算真正出师了
这是一个运算顺序的问题。注意括号的运用
(1) ++(*pointer)是先取值,再自增当前pointer指向的是位置arr[3],取值后是2*pointer的结果是2,2再自增当然会得出3。
值得说明的是这个括号是可以省略的,此处括号只起到增加程序可读性的作用
(2)*(pointer-2)是先移动指针,再取值pointer-2是把指针从当前位置arr[3]回退两个位置,指向了arr[1]再取值,也就是取出的元素6
当然,这个括号是不可省略的
还囿不明白之处,请留言
指针(Pointer)是编程语言中的一个对象,利用地址它的值直接指向(points to)存在计算机存储器中另一个地方的值。由于通过地址能找到所需的变量单元可以说,地址指向该变量单元因此,将地址形象化的称为“指针”意思是通过它能找到以它为地址嘚内存单元。
作个比喻假设将计算机存储器当成一本书,一张内容记录了某个页码加上行号的便利贴可以被当成是一个指向特定页面嘚指针;根据便利粘贴面的页码与行号,翻到那个页面把那个页面的那一行文字读出来,这就是指针的作用
第一个,pointer下标地址为3内容為2自加符号在前,是先加完再执行2+1等于3
第二pointer下标地址为3,3-2等于1下标地址为1的内容是6。
我自学c语言这是我的理解。