o wyrażeniu „& anArray” w c

Najpierw przeczytałem, że:

array&array&array[0]

wszystko będzie takie samo, jak długo „tablica” jest naprawdę tablicą. Próbowałem więc:

int main(){ 
     char ar[]={'a','b','c','\0'};
     printf("argument: &ar     %s\n",&ar);
     printf("argument: &ar[1]    %s\n",&ar[1]);
}

wyjście:

argument:&ar   abc  
argument:&ar[1]  bc

Wygląda na to że&ar jest traktowany jako wskaźnik do pierwszego elementu zamiast wskaźnika do „ar”, który sam jest wskaźnikiem do pierwszego elementu, jeśli się nie mylę.

ponieważ nie powinno być tak, że & (wskaźnik na znak) jest traktowany, próbowałem:

char a='s';
char *pa=&a;
printf("argument: &pa   %c\n",&pa);

Wyjście dla%c nie jest nawet postacią. Nie powinno to być również traktowanie wskaźnika do pierwszego elementu tablicy. Próbowałem:

char *pa=&ar[0];
char **ppa= &pa;
printf("argument: &pa   %s\n", ppa);

Wyjście dla%s nie jest zaskakujące, nonsens; ale dlaczego nie&ar był nonsens? Bo jeśliar były wskaźnikiem, nie powinny&ar być tak samo wskaźnikiem do wskaźnika jak jestppa?

Moje pytania:

Czy po prostu „&” jest ignorowane po umieszczeniu przed nazwą tablicy? Czy nazwy tablic są po prostu specjalne?Jeśli tak, w jaki sposób kompilator sprawdza, czy identyfikator następujący po znaku „&” jest odwołaniem do tablicy? Czy faktycznie wyszukuje go na liście tablic, więc dla deklarowanych?

questionAnswers(3)

yourAnswerToTheQuestion