C 语言 指针和数组的几点笔记:


 

1. 数组跟指针的差别呢? 对于一个数组,我们只能做两件事情, 就是确定数组长度和获得指向该数组第一个元素的指针。 其他的行为,都是通过指针方式来进行的。

 

如: int arr【4】;

          Int * ip;

 

        arr是指向数组首地址的指针, 所有 可以有 ip = arr。 并且arr 是一个指针常量。 所以你不能给arr赋值。  *(a +1)是取数组下标为1 的值,同样地 *(a + i) 是数组下标为 I 的引用。这种写法如此常用因此被简记为a[i] , 略带一句,由于 a + i 等于 I +a , 所有 arr [i]  又可以写成 i[arr], 但是这种写法是绝对不推荐的。

2. 前面写到, ip = arr;   如果ip 所指的地址是 0x1024 ,  那 ip+1 是多少呢。

编译器会记录数组中元素的类型,  如果ip 指向 类型为 int 的数组, 则ip + 1 编译器会自动解释为 ip +1*(sizeof (int)) 正是这种机制,才保证无论数组中的元素是何种类型, 指针 加加 都保证指向数组中的下一个元素。

关于, 字符串 的理解是匿名数组。

 

3. 如果我们一数组名,作为函数参数传递,那么数组名会立刻转换为数组首地址的指针。

 

4.关于数组长度, int  arr[10],

 

For(i=0;i<10; i++)

 

的解释:  为何不是For(i=0;i<=9; i++)

 

整数 x, 满足, x> = 10 . 且x< = 21 满足x的整数有多少个呢。 如果是 x>=10 且 x< = 11,我们知道满足条件的整数有两个就是10 和 11, 所以有 11 – 10 + 1 ,怎么解决这种统一的边界问题呢?就是“不对称边界”方法。  “x> = 10 . 且x< = 21” 可以写成 “x> = 10 . 且x< 22”只需要 22 – 10 !!

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值