指针和数组

str[3] 用指针法如何表示?

答:*(str + 3)  恕我直言:写成 str + 3 或 *str + 3 的童鞋请面壁去……

 假设整型指针变量 p 存放的地址值是 0x11008888,那么请问 p + 1,p + 2,p + 4 和 p + 8 的地址分别是?

p + 1 == 0x11008888 + 4 == 0x1100888C
p + 2 == 0x11008888 + 8 == 0x11008890
p + 4 == 0x11008888 + 16 == 0x11008898
p + 8 == 0x11008888 + 32 == 0x110088A8

 请问 str[20] 是否可以写成 20[str]?答:可以。因为在访问数组的元素的时候,数组名被解释为数组第一个元素的地址。所以 str[20] == *(str + 20) == *(20 + str) == [20]str

不信你自己试试看?

你能猜出下边关键代码段是用于干啥的吗?

……
while (n-- && (*target2++ = *target1++) != '\0')
                ;
…………

答:实现 strncpy 函数的功能(具体实现代码见下方动动手)。这道题比较考“经验”了,初学者很难想象出来的(So,想不出来不要泄气,以后看到就晓得了~)。

 接上一题,请问代码写成下方形式,能否正确实现要求?

……
while ((*target2++ = *target1++) != '\0' && n--)
                ;
……

答:不能。因为这么做会超出要求 1 个字符(比如要求拷贝 5 个字符,实际拷贝了 6 个),因为代码的逻辑是 *target2++ = *target1++ 先赋值,再判断 n--。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

倦504

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值