Junior
Fale sobre as diferenças entre uma referência e um ponteiro na linguagem C/C++.
sobes.tech IA
Resposta da IA
Uma referência pode ser considerada como um alias para um objeto existente; um ponteiro contém o endereço de memória do objeto.
| Característica | Referência | Ponteiro |
|---|---|---|
| Inicialização | Deve ser inicializada na declaração. | Pode não estar inicializado. |
| Reatribuição | Não pode ser reatribuída após a inicialização. | Pode apontar para outro objeto. |
| Valor nulo | Não pode ser null. | Pode ser nullptr (C++11) ou NULL (C/C++). |
| Indexação de arrays | Não suporta aritmética de ponteiros diretamente. | Suporta aritmética de ponteiros. |
| Operadores | Usado diretamente (. para membros). |
Usa * para desreferenciar, -> para membros. |
| Tamanho | Não tem tamanho próprio, refere-se ao tamanho do objeto. | Tem tamanho, correspondente ao tamanho do endereço no sistema (normalmente 4 ou 8 bytes). |
| Alocação de memória | Não requer alocação/liberação explícita de memória. | Pode requerer new/delete (em C++). |
| Uso | Frequentemente como parâmetros de funções para passar por referência. | Para alocação dinâmica de memória, acesso de baixo nível. |
// Exemplo de uso de referência
int x = 10;
int& ref = x; // ref é um alias para x
ref = 20; // x agora é 20
// Exemplo de uso de ponteiro
int y = 30;
int* ptr = &y; // ptr aponta para o endereço de y
*ptr = 40; // y agora é 40
// O ponteiro pode ser nullptr
int* null_ptr = nullptr;