9.12学习记录<<C和指针>>读后感

  《C和指针》这本书是暑假看的,看的不算精吧,也可以说是原来懂得巩固一下,之前没有理解的这次还是没有彻底弄明白。我就把我看的比较仔细地方做一点整理。

  先讲数组这块,我们先考虑下面这个例子:

  int a[10];

  int b[10];

  int *c;

  ……

c = &a[0];

表达式&a[0]是一个指向数组第一个元素的指针。但那正是数组名本身的值,所以下面这条赋值语句和上面那条赋值语句所执行的任务是完全一样的;

  c = a;

这条赋值语句说明了为什么理解表达式中的数组名的真正含义是非常重要的。如果数组名表示整个数组,这条语句就表示整个数组被复制到一个新的数组。但事实上完全不是这样,实际被复制的是一个指针的拷贝,c所指向的是数组的第一个元素。因此,像下面这样的表达式:

b = a;是非法的。你不能把赋值符把一个数组的所有元素复制到另一个数组。你必须使用一个循环,每次复制一个元素。考虑下面这条语句

a = c;c被声明为一个指针变量,这条语句看上去像是执行某种形式的指针赋值,把c的值复制给a,但这个赋值是非法的:记住!在这个表达式中,a的值是个常量,不能被修改。

指针和下标:

如果你可以互换地使用指针表达式和下标表达式,那么你应该先使用哪个呢?和往常一样,并没有一个简明的答案,但对于绝大多数人而言,下标更加容易理解。可读性方面下标比较占有优势,但在另一个方面,指针可能效率会更高一些。

让我们来研究两个循环:

首先,我们使用下标方案

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值