[Powered by Google Translate] DAVID DICIURCIO: Entón, un concepto importante para comprender
programación é a noción de ámbito.
Ámbito pode ser definida como o contexto en que a variable é
visible ou accesible.
Por exemplo, imos dicir que temos unha función, principal, que é
suposto que incrementa unha variable, x, 1-2.
Como podemos ver, a principal arrinque x para un, imprime
algún texto, a continuación, executa o incremento da función antes de
imprimindo máis texto.
Se esta función fose para funcionar correctamente, sería
imprimir x como 2.
Imos tentar.
>> Entón, como podes ver, o principal non fai o que esperabamos.
El devolve o valor 1, en vez
que o 2 esperabamos.
A razón para este erro pode ser explicado polo ámbito.
Na función, de inicio, inicializar x
só dentro da función.
Noutras palabras, a variable x é declarada localmente dentro do
función, principal, e non é accesible
fóra da función.
Só principal pode acceder x nesta situación.
Cando chamamos incremento non pasamos x como entrada, pero
só unha copia de x.
Como resultado disto, o incremento da función só engade
o valor de 1 para unha copia do valor de x.
Pero non para o propio x.
Cando volver a principal, x si non cambiou en nada.
Así imprimir x só vai producir o valor de 1.
>> Ben, entón, que deixa a cuestión: como debemos corrixir
esta función?
Unha solución é ter incremento de voltar un valor.
Deste xeito, o incremento da función vai
nos devolver un enteiro.
Entón, aquí está o noso código revisado coa
función de incremento alternativo.
Aquí, en vez volveu x + 1, no canto de só o fin
con x igual a x + 1.
Ademais, tomar coñecemento de que substituimos saída de
incremento, anteriormente anular, con int, afirmando que
incremento vai agora pasar de volta un valor enteiro.
Agora, despois de carreiras de incremento, el ha voltar con un valor de
2, exactamente como pretendía.
>> Outra situación que demostra importancia dentro do
é en scopeloop.c.
Neste código, temos un loop en que a variable
total é inicializar durante cada paso.
Desafortunadamente, este código non compila.
Isto é porque o total variable en realidade non existe
fóra do loop.
Variables declaradas dentro loops só existe dentro do
lazo propiamente dito e é demostrada no noso erro
total de mensaxe non declarados.
O total variable ten aínda que ser declaradas no ámbito
da función principal.
Ademais, en cada iteração do loop for noso, nós
son reinitializing noso total a 0.
Iso por si só non manter o código de compilación, pero
impediría total de xa suma a un valor pasado 1.
>> Unha vez máis, cal é a mellor maneira de solucionar isto?
Un dos métodos máis fáciles inclúe facer local total de
A función principal, en vez de para a propia espira.
Isto total para realmente aumentar, e, finalmente,
permitir que sexa impreso despois do loop.
Outra técnica que eu só vou resumir faría
ser o uso de variables globais.
As variables globais son variables que son declaradas antes de main
que manter o seu valor ao longo de todo o programa.
Está claro que as funcións poden cambiar o valor de un global,
pero eles non saen do ámbito como variables locais.
Con todo, o uso de variables globais tende a ser careta
sobre como o deseño malo, xa que hai formas mellores de
compartir datos entre as funcións.
Por exemplo, o uso de punteiros.
Pero máis sobre iso noutro momento.
>> Finalmente, é importante ter unha comprensión do alcance
no contexto da memoria do ordenador, ou RAM.
Cando executar un programa, as variables locais e funcións
son engadidos a un lugar específico no
RAM chamado a pila.
Como retorno funcións, os cadros de pila das variables son
eficazmente eliminado da pila liberando máis memoria.
Así, ao analizar o alcance, asegúrese lembrar estes tres
puntos clave.
Un ámbito, pode ser local ou global.
Depende de onde a variable é declarada.
Dúas variables declaradas ou inicializar en funcións
lugar para a función e non pode ser modificada por outra
funcións, polo menos non sen o uso de punteiros.
Finalmente, as variables son sempre locais de laçadas que son
declarado dentro.
As variables non son accesibles
fóra do circuíto.
>> Isto é todo por agora ámbito.
Grazas por asistir.