## Existe uma forma para alterar uma variável em uma função a partir de outra função? Como fazer isso? Acredito que é possível utilizar o escopo das variáveis para determinar a melhor escolha. Para alguns casos é possível utilizar o escopo global da variável (ser declarada fora das funções). Também temos o recurso _extern_, mais utilizado para programas com mais de um arquivo de código, explicado no livro C Programming Language, ainda no primeiro caṕítulo. Podemos fazer também a passagem por referência, utilizando ponteiros. (Cap 5 C Programming Language). ## Porque as variáveis de uma função, em princípio, são locais à própria função? Acredito que primeiramente seja uma escolha na estruturação da própria linguagem C. Uma linguagem simples, estruturada, que é explicíta e que exige comprometimento do programador. Esta escolha permite ao programador maior controle do seu código e evita erros e problemas em programas mais longos. Tudo isto reflete a filosofia da linguagem e facilita a vida do programador: permite a utilização do mesmo nome de variável, ajuda para encontrar erros, debug, encapsulamento/estruturação de código personalizável, evita erros e variações indesejadas com as variáveis. ## Se o valor associado a um ponteiro é um endereço, o que teremos com a avaliação de _&NOME_DO_PONTEIRO_? Ponteiro são variáveis, portanto, teremos o endereço de memória onde variável ponteiro está armazenada. ~~~C #include //ponteiro não inicializado int main() { int *ponteiro; printf(format: "%p\n", (void*)&ponteiro); return 0; } ~~~