Perguntas sobre ponteiros restritos

Estou um pouco confuso sobre as regras relativas a indicadores restritos. Talvez alguém por aí possa me ajudar.

É legal definir ponteiros restritos aninhados da seguinte maneira:

int* restrict a;
int* restrict b;


a = malloc(sizeof(int));


// b = a; <-- assignment here is illegal, needs to happen in child block
// *b = rand();


while(1)
{
    b = a;  // Is this legal?  Assuming 'b' is not modified outside the while() block
    *b = rand();
}

É legal derivar um valor de ponteiro restrito da seguinte maneira:

int* restrict c;
int* restrict d;


c = malloc(sizeof(int*)*101);
d = c;


for(int i = 0; i < 100; i++)
{
    *d = i;
    d++;
}


c = d; // c is now set to the 101 element, is this legal assuming d isn't accessed?
*c = rand();

Obrigado! Andrew

questionAnswers(2)

yourAnswerToTheQuestion