了解2D数组中字符串的寻址

时间:2015-09-08 17:31:24

标签: c

#include<stdio.h>
 void main()
{
  char s[10][10];
 int i;

 for(i=0;i<4;i++)
      scanf("%s",s[i]);
 printf("%s",s);
 printf("%s",s+1);
 printf("%s",s[1]+1);
}

当我输入上面的代码行时,首先printf语句将打印第一个字符串,第二个printf将打印第二个字符串,因为s[1]等同于s+1。但第三个printf将从第二个字符开始打印第二个字符串。

如果s[1]等同于s+1,为什么s[1]+1不会给出s+2的结果?

我不知道2D字符串数组的地址计算。

1 个答案:

答案 0 :(得分:4)

指针算法的工作方式,s[i]等于*(s + i)。因此s[1]+1实际上是*(s + 1) + 1,与s + 2*(s + 2)不同。