Structure de tableau en C
Discutez d'informatique ici !
-
lilredhood
- Membre Naturel
- Messages: 20
- Enregistré le: 13 Oct 2017, 23:55
-
par lilredhood » 28 Mar 2018, 01:15
Bonjour,
j'aimerais juste savoir si on peut initialiser un tableau dans une structure comme ça cela,
sachant que j'ai prédéfini mon type :
typedef struct a
{
int tab[5];
}a;
Voila ma question, peut on écrire : a.tab[]={1,2,3,4,5}; ou bien faut il obligatoirement par une fonction?
merci
-
FLBP
- Habitué(e)
- Messages: 289
- Enregistré le: 25 Aoû 2017, 02:07
-
par FLBP » 04 Avr 2018, 12:12
Bonjour,
Oui, mais il faut que votre attribut tableau soit déclaré "static" et qu'il soit initialisé ainsi :
int a::tab[] = {1,2,3,4,5};
Cordialement.
-
mathelot
- Habitué(e)
- Messages: 13686
- Enregistré le: 08 Juin 2006, 08:55
-
par mathelot » 04 Avr 2018, 19:16
bonjour,
je n'ai pas fait de C++ depuis quinze ans, mais j'aurai écrit quelque chose comme
p=(int *) malloc(struct a)
allouer de la mémoire en dynamique et retourner un pointeur vers un tableau d'entiers ???
edit : à la lumière du code de fatal error, ça serait plutôt
p=(int *) malloc(sizeof(struct a));
Modifié en dernier par
mathelot le 04 Avr 2018, 21:37, modifié 1 fois.
-
fatal_error
- Modérateur
- Messages: 6610
- Enregistré le: 22 Nov 2007, 13:00
-
par fatal_error » 04 Avr 2018, 20:09
bj messieurs
lire
https://stackoverflow.com/questions/212 ... truct-in-c@fblp
- pas sur qu'il y ait de static pour membre de struct en C.
@mathelot
ton code c'est pour du C (pas du C++)
il répond pas trop au pb puisqu'on veut juste initialiser un array pas toute la struct
-------
## apres initialisation
- Code: Tout sélectionner
il est possible de copier... valeur à valeur
int init[5] = {1,2,3,4,5}
a my;
for(int i=0;...){
my.tab[i] = init[i];//scalar assignment, not array
}
ou bien
- Code: Tout sélectionner
my.tab[0] = 1; my.tab[1] = 2; ...
ou de copier via heap via memcpy (mais passons les allocs dont on peut .. se passer)
## en initialisant directement la structure
- Code: Tout sélectionner
#include "stdio.h"
typedef struct a
{
int randomField;
int tab[5];
}a;
int main(){
a my = {0, {1,4,5,2,3}};
printf("randomField %i\n", my.randomField);
for(int i=0;i<5;++i){
printf("%i",my.tab[i]);
}
return 0;
}
la vie est une fête
Utilisateurs parcourant ce forum : Aucun utilisateur enregistré et 10 invités