c语言&c[i]和&c[i]在二维数组中怎么都可以,放了代码

#include<stdio.h>
#include<string.h>
int main(){
int n=0;
char a[101]={0};
char c[10][101] ;
scanf("%d",&n);
 for(int i=0;i<n;i++){
     scanf("%s",&c[i]);   //此处,加不加&结果都是一样的,这是为什么呀
 }
for(int k=0;k<n;k++)
{
    strcpy(a,c[k]);
   //wp记录p的位置,wt记录t的位置,mp记录p的个数,mt记录t的个数,amount记录pat以外字符的个数
   int wp=0,wt=0,mp=0,mt=0,count=0;
   int length=strlen(c[k]);
   for(int j=0;j<length;j++){
     if(a[j]=='P'){
       mp++;
       wp=j;
     }
     
     if(a[j]=='T'){
       mt++;
       wt=j;
     }
     
     if(a[j]!='P'&&a[j]!='A'&&a[j]!='T')
       count++;
   }
   
   int center=wt-wp-1;
   int later=length-wt-1;
   if(mp==1&&mt==1&&count==0&&wp*center==later&&wt-wp>1)
        printf("YES\n");
       else
        printf("N0\n");
 }
}

scanf传得必须是指针,也就是地址。


比如int a;就需要&a;

但是如果是数组,数组本身表示的是数组首元素的地址。

也就是int a[10]里a就表示a[0]的地址;

那a[3]的地址呢?可以这样,&a[3];这就是加&的数组,

如果不加呢,可以这样(a+3)就可以了,a是a[0]的地址,那么a+3就是a[3]的地址。