forked from blau_araujo/cblc
27 lines
1.6 KiB
Markdown
27 lines
1.6 KiB
Markdown
|
## 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 <stdio.h>
|
||
|
//ponteiro não inicializado
|
||
|
int main() {
|
||
|
int *ponteiro;
|
||
|
printf(format: "%p\n", (void*)&ponteiro);
|
||
|
return 0;
|
||
|
}
|
||
|
~~~
|
||
|
|