È possibile accedere a qualsiasi elemento array all'interno di un array tramite un puntatore struttura questo modo:
- per 1 D matrice:
structure_pointer->array_valiable[index1]
- per 2 D array:
structure_pointer->array_valiable[index1][index2]
così ora, è possibile inizializzare ogni membro di array X
, Y
e field
della struttura snake_pos
utilizzando scanf()
questo modo:
#include <stdio.h>
typedef struct Snake_pos
{
char field[10][10];
int Y[10];
int X[10];
}snake_pos;
void pos_init(snake_pos *pos1)
{
int i,j;
//initializing each member
//of array X
for(i=0;i<10;i++)
scanf("%d",&pos1->X[i]);
//of array Y
for(i=0;i<10;i++)
scanf("%d",&pos1->Y[i]);
//of the two dimensional array field
for(i=0;i<10;i++)
for(j=0;j<10;j++)
scanf(" %c",&pos1->field[i][j]);
//notice the space before %c is to consume white spaces returning from before scanf's
}
int main()
{
snake_pos pos1;
pos_init(&pos1);
return 0;
}
Nota: se desidera inizializzare tutti i membri su un singolo valore fisso, allora si può invece di utilizzare scanf() nel ciclo for, assegnare il valore in questo modo:
for(i=0;i<10;i++) //initializes all members with a value of 0
pos1->X[i]=0;
Entrambe le risposte sono sbagliate. Non sta definendo, sta inizializzando. In secondo luogo, all'interno della funzione si sta facendo memset di 0, che funzionerà solo se l'utente vuole impostare 0. –
@JayKumarR La domanda dell'OP riguardava ** l'inizializzazione **, in particolare l'uso di '{}' in una funzione che è stata passata una variabile ** definita **. Ho pubblicato due soluzioni. Nel primo caso 'snake_pos pos1 = {0};' è una ** definizione ** che ** inizializza ** e che i dati potrebbero essere facilmente modificati. Nel secondo caso, la funzione passerebbe una variabile ** definita ** a ** inizializza **, ma dal momento che non ha indicato quali valori di ** inizializzare ** ho dato la soluzione banale, che era felice di accettare. Se riesci a pubblicare una risposta migliore, ti preghiamo di modificare quella precedente e di ripristinarla invece di ridurmi al minimo. –
1) Se la domanda di OP riguardava l'inizializzazione, non dovresti ingannarlo dicendo "usa la sintassi = {} quando definisci". 2) L'OP non ha detto che voleva che tutto fosse '0'. Quindi il memset è inutile per tutti i tipi di dati ad eccezione di char e valori zero. 3) Se vuoi semplicemente aiutarlo a usare un trucco, scrivi i commenti e dai una risposta adeguata nella sezione di risposta. –