C / C ++ int [] vs int * (ponteiros versus notação de matriz). Qual é a diferença?

Eu sei que as matrizes em C são apenas ponteiros para dados armazenados sequencialmente. Mas quais diferenças implicam a diferença na notação [] e *. Quero dizer, em TODO o contexto de uso possível. Por exemplo:

char c[] = "test";

se você fornecer essa instrução em um corpo de função, ela alocará a string em uma pilha enquanto

char* c = "test";

apontará para um segmento de dados (somente leitura).

Você pode listar todas as diferenças entre essas duas notações em TODOS os contextos de uso para formar uma visão geral clara.

questionAnswers(5)

yourAnswerToTheQuestion