黑马程序员技术交流社区

标题: 关于c指针的一些理解 [打印本页]

作者: cctao    时间: 2014-10-26 23:43
标题: 关于c指针的一些理解
在论坛中看到好多同学问关于指针的问题,正好我在csdn有发表指针的文章:
http://blog.csdn.net/dashudeshu/article/details/40458527
下面我就把最基本的一些概念奉上:
指针与数组:
  int a[3]={1,2,3};
我们可以通过a[i];(i<3)来访问数组中的各个元素,我们单独看a,a就是这个数组的其实地址,即a是一个指针,那么我们也可以*(a+i)来查看数组a[3]的各个元素。
当我们定义int *p =a;即p==a,*(p+i)一样可以访问 通过数组名访问数组元素 。
注意:
       我们可以用p++ 来变换p的来指向下一个元素地址,但是a++就会出错,你只要记住a是常量永远只想数组的起始地址就可以了。当声明p时被声明为指针常量,那么p++也会报错。
                int *const pa = a; //此时pa就是一个指针常量,无法更改。
  再加一个小知识点:
      int *const pa = a;与int  const  *pa;有什么不同?刚开始我也没弄明白,后来搞清楚const的位置就感觉原来也没什么,接下来认真看我将这俩句代码变型:
1, int *const pa = a;=========》 int *(const pa) = a;
  2,int  const  *pa;    =========》 int  const ( *pa);
1句理解:pa是指向a的指针,const pa 即pa是一个常量指针,不能更改pa的值但你可以通过*pa来修改a的值
2句理解:*pa是a的值,const *pa 即指针pa是一个指向int型常量的指针,可以更改其值即它可以重新指向另一个地址 但是不能通过 *pa改变a的值。
作者: 冰点    时间: 2014-10-27 12:23
学习啦。。。
作者: chri_liu    时间: 2014-10-27 18:06
学习啦





欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2