兄弟们,过来帮忙解释一下这个C程序

来源:百度知道 编辑:UC知道 时间:2024/05/11 16:51:54
这个程序的作用是读入几个字符串,反向显示每个字符串的字符并给出他们的长度,程序如下:
main()
{
char test [5] [20];
int i,j,k;
for(k=0;k<5;k++)
scanf("%s",&test);
for(k=0;k<5;k++)
{
i=0;
while(test [k] [i]!='\0')
i++;
for(j=0;j<i/2;j++)
{
ch=test [k] [j];
test [k] [j]=test [k] [i-j-1];
test[k] [i-j-1]=ch;
}
printf("the length of %1dth string is %d\n",k,i);
printf("%s\n",test [k]);
}
}
此程序我有一个地方看不懂:
字符串整体输入的时候不是不应该加&这个符号吗?这是个二维字符数组,可以看成5个一维数组,而字符数组的输入有两种方式:一是逐个输入,二是整体输入,书上说字符串整体输入的时候不加&这个符号,而
scanf("%s",&test [k])为什么要用?

那你试试用&好用吗?
我感觉应该是可用可不用的,
但是应该是scanf("%s",test )
个人意见

&test的意思是指向变量的地址。
scanf("%s",&test [k])的意思是将输入的值存在test [k]的地址下的空间中