Пытаюсь разобраться в программе: 
Программа выводит имена файлов и их i-node в указанном каталоге.
#include <stdio.h>
#include <dirent.h>
#define dirname "/home/max/prog"
main ()
{
    int i,n;
    struct dirent ** entry;
    n = scandir(dirname, &entry,0,0);
    if (n<0) {printf("Error");}
    for (i=0; i<n; i++)
    {printf("%s inode=%i\n",entry[i]->d_name,entry[i]->d_ino);}
}
Код:
struct dirent ** entry;
 зачем здесь две звездочки, одна указатель, а вторая зачем?
Код:
{printf("%s inode=%i\n",entry[i]->d_name,entry[i]->d_ino);}
Код:
%s и %i
 - показывает тип переменной? 
Код:
entry[i]->d_name,entry[i]->d_ino
 - это поля структуры, но они же не были нигде объявлены, так можно?