Un puntero es una variable que contiene la El ampersand es un operador de C++ y es
dirección de memoria de un dato o de otra comúnmente utilizado para los punteros. Este variable que contiene al dato en un arreglo. operador nos permite obtener la dirección de Esto quiere decir, que el puntero apunta al memoria de una variable cualquiera y es justo espacio físico donde está el dato o la variable. esto (la dirección en memoria) lo que utilizan Un puntero puede apuntar a un objeto de los punteros para referenciar valores. cualquier tipo, como, por ejemplo, a una Los apuntadores y el asterisco estructura o una función. Los punteros se pueden utilizar para referencia y manipular El asterisco es, por decirlo de alguna forma, estructuras de datos, para referenciar bloques el operador por excelencia de los punteros. de memoria asignados dinámicamente y para Su utilidad radica en que, si el valor de dicho proveer el paso de argumentos por apuntador corresponde a una dirección de referencias en las llamadas a funciones. memoria, el asterisco nos permite resolverla y acceder al valor almacenado allí. Viéndolo Detalles al momento de usar punteros desde otro enfoque, un apuntador es El tipo de dato del apuntador debe únicamente una dirección de memoria (un coincidir con el de la variable cuya número) y el asterisco es el que hace la posición en memoria apuntan. magia de obtener el valor referenciado por dicha dirección. Siempre que queremos usar el apuntador debemos anteponer Sobre funciones el asterisco (*) para indicar que Las funciones son una herramienta usaremos el valor en la posición de indispensable para el programador, tanto las memoria apuntada. funciones creadas por él mismo como las que De no usar el asterisco el le son proporcionadas por otras librerías, comportamiento sería impredecible. cualquiera que sea el caso, las funciones Estaremos haciendo uso de la permiten automatizar tareas repetitivas, dirección de memoria más no del encapsular el código que utilizamos, e valor almacenado en ésta. incluso mejorar la seguridad, confiabilidad y estabilidad de nuestros programas. Dominar Después de usar un puntero, el uso de funciones es de gran importancia, especialmente si trabajamos con permiten modularizar nuestro código, arreglos o matrices, es MUY separarlo según las tareas que requerimos, recomendable liberar la memoria por ejemplo una función para abrir, otra para utilizada con la función delete. cerrar, otra para actualizar, etc. básicamente Un puntero o apuntador puede ser de una función en nuestro código debe contener cualquier tipo de dato, inclusive los la implementación de una utilidad de nuestra podemos usar con tipos complejos. aplicación, es decir que por cada utilidad básica (abrir, cerrar, cargar, mover, etc.) sería adecuado tener al menos una función asociada a ésta. Las funciones son un conjunto de 3. Los argumentos de una función procedimiento encapsulados en un bloque, también tienen un tipo y un nombre usualmente reciben parámetros, cuyos que los identifica. El tipo del valores utilizan para efectuar operaciones y argumento puede ser cualquiera y no adicionalmente retornan un valor. Esta tiene relación con el tipo de la definición proviene de la definición de función. función matemática la cual posee un dominio Consejos acerca de return y un rango, es decir un conjunto de valores que puede tomar y un conjunto de valores que Debes tener en cuenta dos cosas importantes puede retornar luego de cualquier operación. con la sentencia return: 1. Cualquier instrucción que se encuentre después de la ejecución de return NO será ejecutada. Es común encontrar funciones con múltiples sentencias return al interior de condicionales, pero una vez que el Se debe recordar que una función siempre código ejecuta una sentencia return lo retorna algo, por lo tanto es obligatorio que haya de allí hacia abajo no se declararle un tipo (el primer componente de ejecutará. la sintaxis anterior), luego debemos darle un nombre a dicha función, para poder 2. El tipo del valor que se retorna en una identificarla y llamarla durante la ejecución, función debe coincidir con el del tipo después al interior de paréntesis, podemos declarado a la función, es decir si se poner los argumentos o parámetros. Luego de declara int, el valor retornado debe ser la definición de la "firma" de la función, se un número entero. define su funcionamiento entre llaves; todo lo que esté dentro de las llaves es parte del cuerpo de la función y éste se ejecuta hasta llegar a la instrucción return. Acerca de los argumentos o parámetros Hay algunos detalles respecto a los argumentos de una función, veamos: 1. Una función o procedimiento pueden tener una cantidad cualquier de parámetros, es decir pueden tener cero, uno, tres, diez, cien o más parámetros. Aunque habitualmente no suelen tener más de 4 o 5. 2. Si una función tiene más de un parámetro cada uno de ellos debe ir separado por una coma. Detalles para invocar funciones Para colocar los parámetros estos deben ir de acorde a la funcionalidad o la tarea que va El nombre de la función debe cumplir nuestra función. Por ejemplo, si se coincidir exactamente al momento de crea una función para sumar 2 números, los invocarla. parámetros de la función deberían ser por El orden de los parámetros y el tipo decirlo así, int a e int b y estar definidos debe coincidir. Hay que ser dentro de la función. cuidadosos al momento de enviar los Cadenas parámetros, debemos hacerlo en el mismo orden en el que fueron Una cadena en C++ es un conjunto de declarados y deben ser del mismo tipo caracteres, o valores de tipo "char", (número, texto u otros). terminados con el carácter nulo. Internamente se almacenan en posiciones Cada parámetro enviado también va consecutivas de memoria en forma de separado por comas. arreglo. Si una función no recibe parámetros, Algunas de las operaciones más importantes simplemente no ponemos nada al con cadenas, son: interior de los paréntesis, pero SIEMPRE debemos poner los Copia de una cadena paréntesis. Cálculo de la longitud, Invocar una función sigue siendo una Comparación, sentencia habitual de C++, así que ésta debe finalizar con ';' como Concatenación, siempre. Extracción de subcadenas, El valor retornado por una función Búsqueda de información dentro de puede ser asignado a una variable del mismo tipo. las cadenas, Conversiones Una función puede llamar a otra dentro de sí misma o incluso puede Cuando se quiere guardar algo en una cadena ser enviada como parámetro a otra. se usa el comando cin.getline(variable, tamaño, ‘Cuando se quiere que termine’). Sintaxis de una función Tipo nombre (tipo Var1, tipo Var2, … tipo Funciones mas comunes de la librería Varn) { string.h Strlen: Calcula la longitud o numero de Conjunto de instrucciones elementos que tiene una cadena, devuelve un numero entero por lo que la cadena deberá ser de tipo entero. } Strlen(nombre de la cadena que se quiere Una observación… conocer el tamaño). Strcpy: Sirve para copiar el contenido de una cadena de caracteres a otra. Strcpy (cadena que está vacía, cadena que se quiere copiar). Strcmp: Sirve para comparar dos cadenas. Compara cual de las dos es mayor alfabéticamente y si son iguales. Se usa sobre todo en condicionales Ejemplo: If(strcmp(cadena1,cadena2)==0){ Cout<<”Ambas cadenas son iguales”; } Strcat: Añade o concatena una cadena con otra.