#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字符串数组的地址计算。
答案 0 :(得分:4)
指针算法的工作方式,s[i]
等于*(s + i)
。因此s[1]+1
实际上是*(s + 1) + 1
,与s + 2
或*(s + 2)
不同。