在论坛中看到好多同学问关于指针的问题,正好我在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的值。 |
|