以下正确的程序段是:()A. char str[20]; scanf("%s",&str);B. char *p; scanf("%s",p);C. char str[20]; scanf("%s",&str[2]);D. char str[20],*p=str; scanf("%s",p[2]);答案是C,为什么呀?A和D错哪儿了呢?为什么str前不能加&?而D里面p[2]前就要加&?