using arrays with functions c
Todo lo que necesita saber sobre matrices con funciones en C ++:
En este tutorial, discutiremos cómo se pueden usar matrices con funciones en C ++. Generalmente, las matrices se pueden pasar a funciones como argumentos de la misma manera que pasamos las variables a funciones.
Pero la evaluación de parámetros formales es ligeramente diferente cuando se trata de arreglos. Antes de explorar realmente el paso de matrices a funciones, necesitamos discutir brevemente el concepto de un puntero a una matriz.
=> Consulte los tutoriales de capacitación detallados de C ++ aquí.
Lo que vas a aprender:
- Puntero a una matriz
- Pasar matrices a la función
- Devolución de matrices de funciones
- Conclusión
- Lectura recomendada
Puntero a una matriz
Considere la siguiente matriz que contiene los primeros cinco números de la secuencia de Fibonacci.
|_+_|Declaremos un puntero fibPtr para apuntar a esta matriz.
|_+_|Cuando imprimimos el contenido de fibPtr, la salida será el primer elemento de la matriz fibSeq. Esto se debe a que el nombre de la matriz sin corchetes se evalúa como un puntero al primer elemento de la matriz. Por tanto, en el ejemplo anterior, el nombre 'fibSeq' apunta al primer elemento de la matriz 'fibSeq'.
A continuación se muestra una representación pictórica del mismo:
Como se muestra en la representación gráfica anterior, fibPtr apunta al primer elemento de la matriz. Por lo tanto, usando la aritmética de punteros, podemos imprimir todos los elementos de la matriz simplemente usando fibPtr.
Por ejemplo, expresión * (fibPtr + 1) apuntará al segundo elemento de la matriz y así sucesivamente.
mejor removedor de software espía para Windows 10
Pongamos esto en un programa y verifiquemos la salida de 'fibSeq' y 'fibPtr':
|_+_|Producción:
fibSeq apunta a: 1
fibSeq (0): 1
fibSeq (1): 1
fibSeq (2): 2
fibSeq (3): 3
fibSeq (4): 5
En el ejemplo anterior, declaramos una variable de puntero fibPtr y luego la hacemos apuntar a la matriz asignando el nombre de la matriz a fibPtr. Cuando hacemos esto, hacemos que el fibPtr apunte al primer elemento de la matriz. Luego imprimimos todos los valores de una matriz usando fibPtr.
Pasar matrices a la función
Cuando se trata de funciones, pasamos matrices a la función de manera similar a como pasamos variables a la función. Pero no pasamos la variable de matriz de tipo ().
En cambio, pasamos el puntero a la matriz, es decir, el nombre de la matriz que apunta al primer elemento de la matriz. Entonces, el parámetro formal que acepta este puntero es en realidad una variable de matriz. A medida que pasamos el puntero, podemos modificar directamente la matriz dentro de la función.
Considere el siguiente programa que calcula el cuadrado de cada elemento de los primeros cinco elementos en la secuencia de Fibonacci para demostrar el paso de una matriz a la función.
|_+_|En el ejemplo anterior, calculamos el cuadrado de cada elemento en una secuencia de Fibonacci. Este cuadrado se calcula dentro de una función. Por lo tanto, pasamos el nombre de la matriz a la función “fibSeqSquare” mientras llamamos a la función desde main. Dentro de la función, calculamos los cuadrados de cada elemento.
Como hemos pasado la referencia a la matriz por medio de un puntero, cualquier modificación que hagamos a la matriz dentro de la función reflejará la matriz. Por lo tanto, cuando imprimimos la matriz en la función principal, obtenemos los cuadrados de cada elemento como salida.
En el ejemplo anterior, hemos visto que el argumento de la matriz (parámetro formal) de la función fibSeqSquare no especifica el tamaño de la matriz, sino solo los corchetes (()) para indicar que es una matriz. Esta es una forma de especificar los argumentos de la matriz.
Otra forma de especificar el argumento de la matriz en la lista de parámetros formales es especificando el tamaño de la matriz dentro de los corchetes. Ambos argumentos funcionan de manera similar. Estas son simplemente las dos formas en que especificamos los argumentos de la matriz.
El siguiente ejemplo muestra un argumento Array especificado con size.
|_+_|El ejemplo anterior tiene una función para mostrar la secuencia de Fibonacci. La función tiene un parámetro como una matriz en la que también hemos especificado el tamaño de la matriz.
También podemos pasar matrices multidimensionales a funciones de la misma manera que se muestra arriba.
cliente ssh gratuito para windows 10
Devolución de matrices de funciones
Cuando se trata de devolver una matriz de la función, C ++ no nos permite devolver una matriz completa de la función. Sin embargo, podemos crear una función para devolver un puntero a la matriz. Pero hay una trampa.
cómo abrir un archivo .eps
Considere el siguiente fragmento de código:
|_+_|Aunque el programa anterior simplemente devuelve el puntero al primer elemento de una matriz de la función, no funciona como se esperaba. No podemos garantizar que el programa nos dé la salida correcta. Puede o no dar la salida correcta.
Esto se debe a que estamos devolviendo la variable local de la función y no estamos seguros de si estará dentro del alcance en el momento en que se devuelva o no.
Por lo tanto, en pocas palabras, C ++ no favorece la devolución de matrices de funciones.
Si necesitamos devolver matrices de la función, debemos usar cualquiera de los siguientes métodos:
# 1) Devolución de matrices asignadas dinámicamente
Podemos devolver el puntero a la matriz de la matriz asignada dinámicamente. Usamos el operador 'nuevo' para asignar dinámicamente la matriz. Como es una matriz dinámica, estará dentro del alcance a menos que 'eliminemos' la matriz. Por lo tanto, el programa se ejecutará bien cuando devolvamos la matriz.
Esto se muestra en el siguiente ejemplo.
|_+_|Producción:
1 2 3
# 2) Devolución de matrices estáticas
Como las variables / matrices estáticas tienen alcance en todo el programa, también podemos devolver matrices estáticas desde funciones. Podemos tomar un ejemplo para demostrarlo. Esto es lo mismo que en el ejemplo anterior con la única diferencia de que en este ejemplo hemos usado una matriz estática en lugar de la matriz asignada dinámicamente.
|_+_|Producción:
1 2 3
Nota : También podemos usar una estructura para envolver la matriz dentro de ella y luego devolver esa estructura. De esta manera, naturalmente devolveremos una matriz de una función. Pero este no es un método muy factible para devolver matrices.
Conclusión
Por lo tanto, en este tutorial, hemos discutido las matrices con respecto a las funciones en detalle. Esperamos que este tutorial haya ayudado a aclarar todas las dudas y conceptos erróneos sobre las matrices y funciones de C ++.
=> Consulte la guía de formación perfecta de C ++ aquí.