C语言问题 有几句代码不太明白 求解

#include

int main()
{
char a[]="1234567890-=QWERTYUIOP[]\ASDFGHJKL;'ZXCVBNM,./";
int i,c;
while((c=getchar())!=EOF)
{for(i=0;a[i] && a[i]!=c;i++);
if(a[i]!=0)
putchar(a[i-1]);
else
putchar(c);}
return 0;
}

这里面的a[i] && a[i]!=c 中的a[i]代表什么意思?

就是a[i] != '\0' && a[i] != c;
也就是通过循环在数组中找到c的下标i

首先a本身是一个字符串数组,a[i]用于读取字符串数组中的第(i+1)个数字