De Objective Caml para C e C++/Construção de tipos: diferenças entre revisões

Saltar para a navegação Saltar para a pesquisa
m
[edição não verificada][edição não verificada]
#include <cstddef>
 
Para qualquer variável ou <i>lvalue</i>, o endereço daquela variável (ou <i>lvalue</i>) é diferente do ponteiro nulo. Note que se aplicamos o operador de dereferenciamento a um ponteiro cujo valor é o ponteiro nulo, então haverá um erro de execução. Considere por exemplo o seguinte programa:
{{Code:Error
|O seguinte programa sofrerá um erro de execução na segunda linha:
</pre>
|
Na função <tt>main</tt>, é declarada uma variável <tt>p</tt> cujo tipo é ponteiro para <tt>ttint</inttt>. O valor inicial é o ponteiro nulo. Na linha seguinte, ocorre uma atribuição do valor 0 a <tt>*p</tt>, que denota o trecho de memória apontado por <tt>p</tt>. Como <tt>p</tt> é o ponteiro nulo, ele corresponde a nenhum trecho de memória, e ocorrerá um erro de execução. Por exemplo, apareceu a seguinte mensagem de erro quando executamos o programa acima e a execução foi interrompida:
}}
Na função <tt>main</tt>, é declarada uma variável <tt>p</tt> cujo tipo é ponteiro para <tt>tt</int>. O valor inicial é o ponteiro nulo. Na linha seguinte, ocorre uma atribuição do valor 0 a <tt>*p</tt>, que denota o trecho de memória apontado por <tt>p</tt>. Como <tt>p</tt> é o ponteiro nulo, ele corresponde a nenhum trecho de memória, e ocorrerá um erro de execução. Por exemplo, apareceu a seguinte mensagem de erro quando executamos o programa acima e a execução foi interrompida:
Bus error
}}
 
====Confusões possíveis com os símbolos <tt>*</tt> e <tt>&</tt>====
187

edições

Menu de navegação