Erro: Rótulo usado mas não definido ao usar o && operator [closed]

int main()
{
        int i = 0;
        int *p = &i;
        int *q = &&i;
        return 0;
}

Ao compilar isso usandogcc emLinux, Estou recebendo o erro

addr.c: In function ‘main’:
addr.c:6:2: error: label ‘i’ used but not defined

Por que o compilador está tratandoint i Comolabel e não inteiro? Quando usamos&& operator?

EDITAR: Ok, eu posso entender um pouco as respostas, mas você pode explicar a definição de macro abaixo de "arch / arm / include / asm / processor.h". Não diz nada sobrelabel, mas o comentário diz, pode retornar o "program counter"

/*
 * Default implementation of macro that returns current
 * instruction pointer ("program counter").
 */
#define current_text_addr() ({ __label__ _l; _l: &&_l;})

questionAnswers(3)

yourAnswerToTheQuestion