J'apprends le C et certaines choses me déroutent et les livres que j'ai lus n'ont pas vraiment aidé à clarifier le problème que j'ai.Utiliser la liste d'initialisation en C après la déclaration
Voici donc le code que j'ai:
#include <stdio.h>
#include <stdlib.h>
#define ARRAY_SIZE 5
// gcc -std=c99 stackoverflow-example.c
int main() {
// declare variable array1
int array1[ARRAY_SIZE];
// declare and init variable array2
int array2[ARRAY_SIZE] = {}; // for integers, the default value is 0
// not initialized
for (int i = 0; i < ARRAY_SIZE; i++) {
// can be anything, not guaranteed to be 0
printf("array1[%d]: %d\n", i, array1[i]);
}
// initialized with initialization list
for (int i = 0; i < ARRAY_SIZE; i++) {
// element == 0
printf("array2[%d]: %d\n", i, array2[i]);
}
// This is the part that confuses me.
// array1 = {}; // error: expected expression before ‘{’ token
// array1[] = {}; // same error
return EXIT_SUCCESS;
}
Yat-il un moyen pratique pour initialiser ce tableau après sa déclaration? Ou la seule façon de mettre chaque élément array1
est une boucle, .: par exemple
for (int i = 0; i < ARRAY_SIZE; i++)
array1[i] = 0;
// initialized with a for loop
for (int i = 0; i < ARRAY_SIZE; i++)
// now it's guaranteed to be 0
printf("array1[%d]: %d\n", i, array1[i]);
Je vous remercie de votre aide. Je sais que c'est un peu une question de noob, mais il est venu comme j'essayais de devenir plus à l'aise avec le langage C et essayé un code non-livre-exemple.
Si vous soupçonnez qu'il y a peut-être quelque chose de fondamental que je n'ai pas reçu, faites le moi savoir, je lirai à ce sujet.
Je pense que vous devriez essayer la fonction 'memset'. Il est optimisé pour initialiser des blocs de données avec une valeur constante. – Milack27
Ok, merci. Cependant, cela ne fonctionne que pour l'initialisation avec 0 (sachez que j'ai utilisé 0 tableau initialisé dans mon exemple, donc cela fonctionnerait réellement). et -1 [(et ce n'est pas vraiment garanti)] (http://stackoverflow.com/a/7202857/4541492). Merci, néanmoins. –
Oh, mon mauvais. Vous avez raison, 'memset' est spécifique aux tableaux d'octets. – Milack27