sappiate che io sono ancora molto nuovo a C e puntatori in generale ... questo è per una classe, quindi non sto chiedendo per il codice esplicito, solo aiutare la comprensione dei concetti .Puntatori e loop in C
Sto provando a creare un ciclo per assegnare valori casuali a un interno di una struttura. Il problema si verifica quando assegno i valori all'iterazione corrente del mio puntatore o array.
struct student{
int id;
int score;
};
struct student* allocate(){
/*Allocate memory for ten students*/
int ROSTER_SIZE = 10;
struct student *roster = malloc(ROSTER_SIZE * sizeof(struct student));
/*return the pointer*/
return roster;
}
void generate(struct student* students){
/*Generate random ID and scores for ten students, ID being between 1 and 10, scores between 0 and 100*/
int i = 0;
for (i = 0; i < 10; ++i) {
students[i]->id = i + 1;
students[i]->score = rand()%101;
}
Ora, dalla mia comprensione, che è più probabile corretta, dovrei essere in grado di utilizzare students[i]
per assegnare valori a ogni iterazione, ma VS 2010 mi dice "l'espressione deve avere un tipo di puntatore." Non è già un puntatore? È passato alla funzione come un puntatore, giusto?
"Non sto chiedendo il codice esplicito, solo aiuto nella comprensione dei concetti." INOLTRE non hai lanciato il valore di ritorno di 'malloc()' - questo è un +1 definito. –
Il * contenuto * dell'array non è * puntatori * alle strutture dello studente; è * è struttura studentesca. Quindi perdere l'uso '->' in questo caso e sostituirlo con '.'. – WhozCraig
Sono l'unico infastidito dalla parentesi graffa mancante? :-) – Massimiliano