C语言中的指针使得代码的编写非常灵活,如果指针能够和数组结合,那将会有更多的“花招”,请看下面的代码:
运行结果:
s1 = c.biancheng.net s2 = biancheng.net c1 = a c2 = c c3 = a c4 = e c5 = c num1 = 101 num2 = 2686736 num3 = 2686738
字符与整数运算时,先转换为整数(字符对应的ASCII码)。num1 与 c4 右边的表达式相同,对于 num1,*str+2 == 'c'+2 == 99+2 == 101,即 num1 的值为 101,对于 c4,101 对应的字符为 ‘e’,所以 c4 的输出值为 'e'。
num2 和 num3 分别为字符串 str 的首地址和第 2 个元素的地址。
为了加深大家的理解,请继续阅读下面的代码:
运行结果:
abcdefghij cdefghij c e
第5行代码用来将字符数组中的所有元素都初始化为\0
,这样在循环结束时就无需添加字符串结束标志。
前面三个 printf() 比较容易理解,第四个 printf(),str+2 表示指向第 2 个元素,(str+2)[2] 相当于 *(str+2+2),也就是取得第 4 个元素的值。