"Si un trabajador quiere hacer bien su trabajo, primero debe afilar sus herramientas." - Confucio, "Las Analectas de Confucio. Lu Linggong"
Página delantera > Programación > ¿Cómo declarar matrices de tamaño variable en el estándar C?

¿Cómo declarar matrices de tamaño variable en el estándar C?

Publicado el 2025-04-15
Navegar:480

How Can I Declare an Array With a Variable Size in Standard C?

asignación de matriz dinámica en c con tamaño de matriz variable

variable matrices, también conocido como matrices dinámicas, posee un desafío en el programa estándar C. considere el siguiente programa:

n = fread(Sbuf, sizeof(char), siz, picture);
/* ... do stuff with the buffer ... */
/* memset(Sbuf, 0, sizeof(Sbuf)); */


El código anterior intenta asignar una matriz de caracteres con un tamaño determinado por un Siz variable. Sin embargo, en el estándar C, los tamaños de matriz deben ser constantes. Esto plantea la pregunta: ¿Cómo podemos declarar Siz correctamente para permitir la compilación de código?

Desafortunadamente, no existe un método directo para declarar una matriz con un tamaño variable en estándar C. Sin embargo, varias alternativas existen:

STD :: Vector:
    en C. matrices. Se puede extender fácilmente a cualquier tamaño deseado y su uso es relativamente sencillo.
  • nuevo operador:
  • El nuevo operador se puede emplear para asignar la memoria dinámicamente en el montón. Para crear una matriz con un tamaño variable, se puede usar char* sbuf = new Char [Siz]; Para asignar una variedad de caracteres de Siz en el montón. Sin embargo, este enfoque introduce preocupaciones de gestión de memoria (por ejemplo, fugas de memoria potenciales), lo que lo hace menos adecuado que std :: vector.
Último tutorial Más>

Descargo de responsabilidad: Todos los recursos proporcionados provienen en parte de Internet. Si existe alguna infracción de sus derechos de autor u otros derechos e intereses, explique los motivos detallados y proporcione pruebas de los derechos de autor o derechos e intereses y luego envíelos al correo electrónico: [email protected]. Lo manejaremos por usted lo antes posible.

Copyright© 2022 湘ICP备2022001581号-3