Structure de tableau en C

Discutez d'informatique ici !
lilredhood
Membre Naturel
Messages: 20
Enregistré le: 13 Oct 2017, 23:55

structure de tableau en C

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

Re: structure de tableau en C

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.

Avatar de l’utilisateur
mathelot
Habitué(e)
Messages: 13686
Enregistré le: 08 Juin 2006, 08:55

Re: structure de tableau en C

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.

Avatar de l’utilisateur
fatal_error
Modérateur
Messages: 6610
Enregistré le: 22 Nov 2007, 13:00

Re: structure de tableau en C

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 :)

 

Retourner vers ϟ Informatique

Qui est en ligne

Utilisateurs parcourant ce forum : Aucun utilisateur enregistré et 10 invités

Tu pars déja ?



Fais toi aider gratuitement sur Maths-forum !

Créé un compte en 1 minute et pose ta question dans le forum ;-)
Inscription gratuite

Identification

Pas encore inscrit ?

Ou identifiez-vous :

Inscription gratuite