Recentemente, decidi que só preciso aprender C / C ++, e há uma coisa que realmente não entendo sobre ponteiros ou, mais precisamente, sua definição.
Que tal estes exemplos:
int* test;
int *test;
int * test;
int* test,test2;
int *test,test2;
int * test,test2;
Agora, no meu entendimento, os três primeiros casos estão todos fazendo o mesmo: Teste não é um int, mas um indicador para um.
O segundo conjunto de exemplos é um pouco mais complicado. No caso 4, teste e test2 serão ponteiros para um int, enquanto no caso 5, apenas teste é um ponteiro, enquanto test2 é um int "real". E o caso 6? Mesmo que o caso 5?
int*test;
?
Foo<Bar<char>>
No >>
tinha de ser escrita > >
para não ser tratado como um shift direita.
++
operador de incremento não pode ser dividido por um espaço, os identificadores não podem ser divididos por um espaço (e o resultado ainda pode ser válido para o compilador, mas com comportamento de tempo de execução indefinido). As situações exatas são muito difíceis de definir considerando a bagunça de sintaxe que é C / C ++.