个人对“数组与指针”的重点笔记(中)

    我们在初学数组和指针的时候经常会碰到这样的题目,要求一个数组的元素和,并要使用数组,指针和函数。我们往往要调用一个函数实现循环,并且在形参中引用一个指针指向数组的第一个地址,然后用一个整形参量做循环的界限,这个整形参量一般是数组的元素个数,然后通过循环一次次相加。其实这种方法还没充分利用指针,指针的灵活在于它的指向是任意的,而且指针可以当作数组来引用,想一想,我们可以安排两个指针做形参,一个指向数组的头,一个指向数组的尾,然后在将头每次循环是往后移一位,这种方法虽然并不会比前一种简单,但使用指针却更充分,

    在c语言中,a[i]和*(a+i)是等价的,无论a是数组还是指针,都没问题。指针可以加减一个整数,也可以把两个指针相减,通常是两个指向同一个数组的指针,意思是两个指针所指向元素的距离。也可以用关系运算符比较两个指针的值,前提是这两个指针都指向相同类型的对象。递增递减指针还要注意一个问题,C不会检查指针是否仍指向数组元素,只能保证指向数组任意元素的指针和指向数组后面第一个位置的指针有效,否则是未定义的。

    还有一个注意事项是:一定不要解引用未初始化的指针。如:int *p;*p=2;这是因为最初p指向的地址是不确定的,是一个随机值,那么也就不知道“2”储存在什么地方,这有可能导致擦写数据或代码,或者程序崩溃。创建指针时,系统只是分配了储存指针本身的内存,并未分配储存数据的内存。因此,在使用指针前,必须先用已经分配的地址来初始化它,或者可以使用malloc函数来分配内存。

    此外,对于数组需要保存其中数据时,我们可以在数组的前面加一个const,从const的作用看保护数组中的数据不被修改,当我们声明一数组为const的时候,则不能改变其中的值,当声明一个指针为const的时候,如const double *p=a,表示不能通过p来改变它所指向的数组的值。但是可以改变p的指向。还要注意的是:把const数据或非const数据的地址都初始化为指向const的指针或为其赋值是合法的,另一方面,只能把非const数据的地址赋值给普通指针。

    另外,对于指针使用const关键词的位置也有讲究,如int *const p;表示该指针不能指向别处,而const int *p;则表示p不能更改它所指向的值,而且当两个位置都存在const时,这两个性质都具备。


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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值