Programar em C/Ponteiros: diferenças entre revisões
[edição não verificada] | [edição não verificada] |
Conteúdo apagado Conteúdo adicionado
Sem resumo de edição |
|||
Linha 106:
(*p)++;
Aqui, colocamos <code>*p</code> entre parênteses para especificar que queremos alterar o valor apontado por <var>p</var>. Ou seja, aqui iremos incrementar o conteúdo da variável apontada pelo ponteiro p.
Neste caso, o efeito não é tão claro quanto nos outros exemplos. A ''precedência'' do operador <code>++</code> sobre o operador <code>*</code> faz com que a expressão seja equivalente a <code>*(p++)</code>. O valor atual de ''p'' é retornado ao operador <code>*</code>, e o valor de <code>p</code> é incrementado. Ou seja, obtemos o valor atual do ponteiro e já o fazemos apontar para o próximo valor.
x = *(p + 15);
Esta linha atribui a uma variável <var>x</var> o conteúdo do décimo-quinto inteiro adiante daquele apontado por <var>p</var>. Por exemplo, suponhamos que tivéssemos uma série de variáveis <var>i0</var>, <var>i1</var>, <var>i2</var>, … <var>i15</var> e que <var>p</var> apontasse para <var>i0</var>. Nossa variável <var>x</var> receberia o valor de <var>i15</var>.
Tente acompanhar este exemplo dos dois tipos de atribuição de ponteiros:
int *a, *b, c = 4, d = 2;▼
a = &c; // '''a''' apontará para '''c'''
b = &d; // '''b''' apontará para '''d'''
*a = *b; // copio o valor de '''d''' (apontado por '''b''')
// para '''c''' (apontado por '''a''')
*a = 1; // altero o valor da variável '''c'''
b = a; // '''b''' aponta para o mesmo lugar que '''a''',
// ou seja, para '''c'''
*b = 0; // altero o valor de '''c'''
= Intermediário =
Linha 219 ⟶ 236:
ptr[1];
*(ptr + 1)
▲ int *a, *b, c=4, d=2;
▲ *b=8; \\ altero o valor existente na variavel “d”
▲* *p++
== Comparando endereços ==
Linha 263 ⟶ 255:
i++;
}
return 0;
}
|