Lenguaje muy eficiente puesto que es posible utilizar sus características de bajo nivel para realizar implementaciones óptimas.
A pesar de su bajo nivel es el lenguaje más portado en existencia, habiendo compiladores para casi todos los sistemas conocidos.
Proporciona facilidades para realizar programas modulares y/o utilizar código o bibliotecas existentes.
Las funciones son porciones de código que devuelven un valor.
Permiten descomponer el programa en módulos que se llaman entre ellos.
En C no existe diferencia entre funciones y procedimientos: a todas las subrutinas se las llama funciones.
La definición de una función especifica lo siguiente:
nombre de la función
número de argumentos que lleva y tipo de cada uno de ellos
tipo de datos que devuelve
Cuerpo de la función (el código que ejecuta)
Sintaxis:
tipo nombre ( arg1, arg2, ... )
{
... cuerpo ...
}
Cada argumento se especifica como en una declaración de variable.
El cuerpo de la función debería contener una sentencia donde se devuelve el resultado de la función, que se hace de esta forma:
return expresión;
La función devolverá el resultado de la expresión.
Llamadas a función
Para llamar a una función, se escribe su nombre y entre paréntesis los valores que se deseen dar a los argumentos:
función ( expr1, expr2, ... )
Cada expresión se evalúa y su resultado se pasa como argumento a la función. Las expresiones han de tener el mismo tipo del argumento correspondiente, o al menos un tipo compatible.
x = suma ( 1, a+5 ); /* correcto */
y = suma ( “hola”, 5 ); /* arg. 1 incorrecto */
Una llamada a función es una expresión, con todo lo que ello implica.
No es necesario recoger en una variable el valor devuelto por la función.
(Por ejemplo, printf y scanf son funciones que devuelven un entero).
Ejemplo de función
Función que devuelve la suma de dos enteros.
int suma ( int a, int b )
{
return a+b;
}
Punteros
El tipo de datos más característico del C son los punteros. Un puntero contiene un valor que es la dirección en memoria de un dato de cierto tipo. Los punteros se emplean en C para muchas cosas, por ejemplo recorrer vectores, manipular estructuras creadas dinámicamente, pasar parámetros por referencia a funciones, etc.
Cuando se declara una variable, se reserva un espacio en la memoria para almacenar el valor de la variable.
Ese espacio en memoria tiene una dirección.
Un puntero es una dirección dentro de la memoria, o sea, un apuntador a donde se encuentra una variable.
Operaciones básicas
Declaración Los punteros se declaran con un asterisco, de esta forma:
tipo * variable;
Por ejemplo:
int* puntero;
Se dice que la variable puntero es un puntero a enteros (apunta a un entero).
Asignación El valor que puede adquirir un puntero es, por ejemplo, la dirección de una variable.
El operador & devuelve la dirección de una variable:
puntero = &variable;
Desreferencia de un puntero
Se puede alterar la variable a la que apunta un puntero. Para ello se emplea el operador de desreferencia, que es el asterisco:
*puntero = 45;
En este caso, se está introduciendo un 45 en la posición de memoria a la que apunta puntero.
Ejemplo de uso
{ int* puntero; int variable; puntero = &variable; *puntero = 33; /* mismo efecto que variable=33 */ }
Varios punteros pueden apuntar a la misma variable:
int* puntero1;
int* puntero2;
int var;
puntero1 = &var;
puntero2 = &var;
*puntero1 = 50; /* mismo efecto que var=50 */
var = *puntero2 + 13; /* var=50+13 */
Cadenas y Caracteres
Un array es una colección de variables del mismo tipo que se referencian por un nombre común. A un elemento específico de un array se accede mediante un índice. En C todos los arrays constan de posiciones de memoria contiguas. La dirección más baja corresponde al primer elemento y la más alta al último. Los arrays pueden tener una o varias dimensiones. El array más común en C es la cadena, que simplemente es un array de caracteres terminado por uno nulo.
Arrays unidimensionales Los arrays unidimensionales son listas de información del mismo tipo que se guardan en posiciones contiguas de memoria según el orden del índice. La forma general de declaración es:tipo nombre_variable [tamaño]; Los arrays tienen que declararse implícitamente para que el compilador reserve espacio en memoria para ellos. El tipo declara el tipo de los elementos del array, el tamaño indica cuántos elementos mantendrá el array. Para declarar un array de 10 elementos denominado p y de tipo carácter, se escribe: p y de tipo carácter, se escribe: char p[10];En este caso hemos declarado un array que tiene diez elementos, desde p[0] hasta p[9]. En C todos los arrays tienen el 0 como índice de su primer elemento. C no comprueba los límites de los arrays. Se puede pasar cualquier extremo de un array y escribir en alguna otra variable de datos e incluso en el código del programa.
No hay comentarios:
Publicar un comentario