【好程序员训练营学习笔记分享1】--c语言指针(一)

<A href="http://www.goodprogrammer.org/" target="blank">ios培训</A>------我的c语言笔记,期待与您交流!

指针(一)

c语言学了很多遍了,发现最难的地方还是指针部分,今天把对指针的个人理解发出来,如果有不对请高人指点。

一、指针的定义:官方的定义请参考百度,我这里给大家举个例子:

把一个村庄比喻为你的内存,则每户人家就是我们经常用的变量,快递员要给你送东西,是不是必须要知道你家的门牌号,而这个门牌号就是指针,记录着你家在这个村庄的具体位置。那么指针就记录着每个变量在内存中的位置。

二,数组中的指针:学过c的人都知道数组名本身就是地址,那么&a是什么呢?它和a有啥区别?

a和&a的地址一样,但是含义不一样。a是数组首地址,a[0]的地址,a+1的意义是数组下一元素的地址;&a是对象(数组)的地址,&a+1的意义是下一对象的地址。

三、指针的加减:

1、对指针加1是下一个元素的地址而不是在指针的值上加1,类型为t的移动是以sizeof(t)为单位移动的。

例如 int a[5]={1,2,3,4,5};那么int *p=(int *)(&a+1);则*p的值则为a[5]的地址,因为加的值是数组a的大小(5*sizeof(int))

四、指针常量和常量指针(前面的两个字是修饰的 后面才是主体)

a) ,常量指针:指向常量的指针,指针可以随便指但是指针所指向的空间的值不能变;const 位于*的左侧的时候  const char * p;

b) 、指针常量:它的第一身份是常量,第二身份才是指针,所以它本身不能随便指了,但是它所指向的空间的值可以变。Const 位于*右侧的时候   char *const p

五、指针数组和数组指针

数组指针:指向数组的指针;指向一维或多维数组的指针,int (*p)[5];释放的时候一定要用delete[],例如一个二维数组a[3][4]赋值给数组指针的时候:

int (*p)[4]=a; p++;的时候p依次指向a[0],a[1],a[2].三 个地址,也就是分别移动了三行所以它也是行指针。

指针数组:一个数组的元素都是指针;int *p[5],有五个指向整形变量的指针。例如一个二维数组a[3][4]赋值给数组指针的时候:

int *p[3]=a;for(i=0;i<3;i++)p[i]=a[i];p[i](p[0]、p[1]、 p[2],)分别是a[0],a[1],a[2]。




  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值