Ponteiros e endereços (OPCIONAL)

  • a memória do computador é formada por (bilhões de) células
    • as células têm endereços consecutivos, que são inteiros ≥ 0
    • cada célula guarda 8 bits (bit = dígito binário, 0 ou 1), que formam um byte
  • variáveis ficam armazenadas em células consecutivas, e tipos diferentes ocupam números diferentes de células
    • int’s ocupam 4 bytes
    • double’s ocupam 8 bytes
  • o endereço de uma variável x é &x
    • o tipo de um endereço de uma variável int é int *
    • o tipo de um endereço de uma variável int é double *
    • variáveis que guardam endereços são chamadas ponteiros
  • se p tem tipo int * (ponteiro para int), então *p refere-se ao valor int armazenado no endereço guardado em p
  • a passagem de ponteiro como parâmetro de funções também ocorre por valor; porém, efetivamente permite emular passagem por referência
  • cuidado ao declarar múltiplos ponteiros: int *x, y; declara um ponteiro x para int e um inteiro (!) y; para declarar ponteiros x e y para int, use int *x, *y;