¿Existe alguna manera más fácil en C
de establecer una matriz en un valor que utilizando un bucle for
y estableciendo cada valor uno por uno?Configuración de una matriz con un valor
Respuesta
Si va a configurar la matriz para todos de 0, o si la matriz es una matriz de bytes, puede utilizar memset
// Set myArray to all 0's
memset(myArray, 0, numberOfElementsInMyArray * sizeof(myArray[0]));
Si es necesario establecer a algo distinto de 0 en unidades más grandes que un byte (por ejemplo, establecer una matriz de int
s a 1), entonces no hay una función estándar para hacer eso, tendrás que escribir tu propio bucle para eso.
¿Por qué no sustituir numberOfElementsInMyArray con 'sizeof (myArray)/sizeof (myArray [0])' ;-) –
Tal vez soy estúpido, pero '1' encaja en un byte. –
@Ben Jackson: Porque eso no funciona si 'myArray' es un puntero a una matriz dinámica. –
Depende del valor. Si es cero, use memset(a, 0, sizeof(a))
. De lo contrario, si se trata de una matriz de caracteres, puede usar memset con algún otro valor. Pero el memset siempre funciona en el nivel char, por lo que si tu array no es char, solo el cero es significativo.
Si se trata de un conjunto de valores de bytes, o si desea configurar cada byte a un valor específico, puede utilizar memset
:
char xyzzy[100];
int plugh[40];
memset (xyzzy, 7, sizeof (xyzzy)); // all chars set to 7.
memset (plugh, 0x42, sizeof (plugh)); // all integers set to (e.g.) 0x42424242.
Otra posibilidad es crear una plantilla del tamaño correcto en el momento de la inicialización (ya sea inicialización real como se indica a continuación, o en una función init
), luego llame al memcpy
a blat (a) en la matriz real en una fecha posterior.
static int template[] = { 1, 1, 1, 1, 1 };
int zorkmid[3];
memcpy (zorkmid, template, sizeof (zorkmid)); // ensure template is at
// least as big as zorkmid.
Este último método también es útil para poblar las estructuras con un valor calculado previamente fijado: inicializar una copia maniquí con los campos obligatorios establecidos a continuación memcpy
en vez de manualmente ajustar todos los campos cada vez que desee una nueva instancia .
(a)Aparte: etimología de blat
:
El Jargon file (ver el glosario para todas las definiciones) enumera blat
ya sea como los cuatro metasyntactic variable de {foo, bar, thud, blat}
, o un sinónimo de blast
, sentido 1.
A su vez, blast
(sentido 1) se define como un sinónimo de BLT
(es decir not el sándwich), que "se refería a cualquier operación de copia o movimiento de campo de bits grande".
blat? ¿Puede proporcionar una cita para ese término? –
Oficialmente, no. Está en el código fuente de BSD para memcpy IIRC, generalmente utilizado para una transferencia de datos más grande de lo normal. Eso, y grok, son mis dos palabras favoritas :-) – paxdiablo
grok es una palabra excelente. Encontré una definición para explosión en The Jargon File, que a su vez aparece como poco común, que enumera blat como una variación. http://catb.org/jargon/oldversions/jarg231.txt –
Se puede configurar con el mismo valor, pero sólo a 0
How to initialize all members of an array to the same value?
inicializar todos los elementos para 0
:
int myArray[10] = { 0 }; // all elements 0
hay una respuesta en esa página para gcc, así .
- 1. ValueError: Configuración de un elemento de matriz con una secuencia
- 2. Seleccione un valor aleatorio de una matriz
- 3. ¿Cómo puedo llenar rápidamente una matriz con un valor específico?
- 4. Python: configuración de un elemento de una matriz Numpy
- 5. Configuración innerHTML vs. valor de configuración con Javascript
- 6. Consulta de MongoDB para recuperar un valor de matriz por un valor en la matriz
- 7. El establecimiento de un valor en una matriz multidimensional utilizando una matriz de claves
- 8. inicialización de la matriz directa con un valor constante
- 9. ruby sumando hash con valor de matriz
- 10. Comparando un valor int con una matriz, luego muestra si el valor coincide o no coincide
- 11. PHP - Obtener valor de matriz con un índice numérico
- 12. Valor más alto de una matriz asociativa
- 13. Eliminar un elemento de una matriz por valor
- 14. QTP: comprobación Si una matriz de cadenas contiene un valor
- 15. El valor de verdad de una matriz con más de un elemento es ambiguo cuando intento indexar una matriz
- 16. Crear una matriz con el valor duplicado de una matriz (PHP)
- 17. Scipy optimizar fmin ValueError: Configuración de un elemento de matriz con una secuencia
- 18. Añadir a un valor de matriz (1)
- 19. Configuración Valor corto Java
- 20. valor de Var en una matriz
- 21. Como llegar valor aleatorio de una matriz
- 22. Buscar si una matriz de objetos incluye un atributo con un valor específico
- 23. Ayúdame a obtener un valor de una matriz PHP multidimensional
- 24. ¿Cómo puedo devolver un valor aleatorio de una matriz?
- 25. Buscar el índice de un valor en una matriz
- 26. ¿Enviar una matriz de JavaScript como un valor JSON?
- 27. Ordenación de una matriz de una matriz de objetos en PHP por valor de clave
- 28. Problema con la configuración y recuperación del valor de AVMetadataCommonKeyCreator
- 29. Django valor de matriz en un formulario
- 30. ¿Encontrando el valor mediano de una matriz?
['memset'] (http://opengroup.org/onlinepubs/007908799/xsh/memset.html)? –
A veces 'wmemset' también puede ser útil.:-) –