每日一练(三十五)


《每日一练合集》

2.16 指针运算

指针的合法运算有以下几个:

  • 指针与整数的加减
  • 同类型指针的比较
  • 同类型指针的加减

当两个指针进行算术运算的时候,指针指向的地址值并不是单纯的数据移动,而是结合指针指向的数据类型的大小,如下:
在这里插入图片描述

注意!!!如果两个指针指向的不是同一个数组中的元素,相减之后的结果是未定义的。

指针还可以进行关系运算,也就是比较,如下的代码用指针的运算实现了数组的清零:
在这里插入图片描述

2.17 访问数组的形式

在这里插入图片描述

重点是C选项与D选项,本来&a指向的数据类型是int [10],但是前面结果(int)*类型强制转换,再+1就是移动一个int了;

D选项也是类似的,sizeof(int)为4,如果是(&a + sizeof(int)),则表示了在int数据类型的基础上移动四个int,就到了a[4],所以(char*)的强制转换使&a的数据类型变为char,则表示在char数据类型的基础上移动4个char,相当于一个int,这就指向了a[1].

2.18 很容易忽略的数组名是常量

一些涉及到数组的题目,看似考察了众所周知的特性,实际上埋得坑远不如此,如下:
在这里插入图片描述

这道题就很容易看错,s += 2;想当然地把s移动2个char的距离,指向‘c’,如果是这样想,那就正中下怀!!!

这里考察的是:数组名是一个地址常量,不可以修改常量,所以会编译报错!!!

2.19 指针在二维数组中的使用

笔试经常会考察指针结合二维数组的问题,比如有一个数组:

int a[4][5];

则结合指针可以得出如下结论:

	&a = int(*)[4][5]
    a+i = int(*)[5]
    *(a+i) = int*
    *(*(a+i)+j) = int a[i][j]
    *(a[i]+j) = int a[i][j]
    

在这里插入图片描述

例子如下:
在这里插入图片描述

在这里插入图片描述

2.20 二维字符串数组问题

在这里插入图片描述

既然数组说明了一行有10个元素,那就不以实际存在的判断了。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值