Sobes.tech
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;