Page 157

3 Funciones

CC 2003, 2008 Andr´ es Marzal e Isabel Gracia

Como ves, las variables locales s´ olo ((viven)) durante la ejecuci´on de cada funci´on. C obtiene una copia del valor de cada par´ ametro y la deja en la pila. Cuando modificamos el valor de un par´ametro en el cuerpo de la funci´ on, estamos modificando el valor del argumento, no el de la variable original. Este otro programa declara numero como una variable global y trabaja directamente con dicha variable: numbits2.c

numbits2.c 1

#include <stdio.h>

2 3

unsigned int numero;

4 5 6 7

int bits( void ) { int b = 0;

8

do { b++; numero /= 2; } while (numero > 0);

9 10 11 12 13

return b;

14 15

}

16 17 18 19

int main(void) { int bitsnumero;

20

printf ("Introduce un entero positivo: "); scanf ("%u", & numero ); bitsnumero = bits() ; printf ("Hay %d bits, pero ahora ’numero’ vale %u.\n", bitsnumero, numero); return 0;

21 22 23 24 25

}

Las variables globales residen en una zona especial de la memoria y son accesibles desde cualquier funci´ on. Representaremos dicha zona como un ´area enmarcada con una l´ınea discont´ınua. Cuando se inicia la ejecuci´ on del programa, ´esta es la situaci´on: variables globales

main

bitsnumero

numero

En main se da valor a la variable global numero: variables globales

main

bitsnumero

numero 128

Y se llama a continuaci´ on a bits sin argumento alguno:

variables globales

bits b llamada desde l´ınea 22

main

bitsnumero

Introducci´ on a la Programaci´ on con C

numero 128

151

Profile for esLibre.com

Introducción a la programación con c  

Introducción a la programación con c  

Advertisement