może uzyskać dostęp do każdego elementu macierzy wewnątrz macierzy poprzez wskaźnik konstrukcji w następujący sposób:
- do 1 D tablicy:
structure_pointer->array_valiable[index1]
- do 2 D array:
structure_pointer->array_valiable[index1][index2]
więc teraz można zainicjować każdy członek tablic X
, Y
i field
struktury snake_pos
korzystających scanf()
ten sposób:
#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;
}
Uwaga: jeśli chcesz zainicjować wszystkich członków do pojedynczej stałej wartości, następnie można zamiast używać scanf() w pętli for przypisać wartość ten sposób:
for(i=0;i<10;i++) //initializes all members with a value of 0
pos1->X[i]=0;
Obie odpowiedzi są błędne. Nie definiuje, inicjuje. Po drugie, wewnątrz funkcji robisz zbiór składający się z 0, który działa tylko wtedy, gdy użytkownik chce ustawić 0. –
Pytanie @JayKumarR OP dotyczyło ** inicjalizacji **, w szczególności użycia '{}' w funkcji, która została przekazana ** określona ** zmienna. Wysłałem dwa rozwiązania. W pierwszym przypadku 'snake_pos pos1 = {0};' jest definicją ** **, która również ** inicjuje **, a dane będą łatwe do zmiany. W drugim przypadku funkcja zostanie przekazana ** zdefiniowaną ** zmienną na ** inicjalizującą **, ale ponieważ nie określił, jakie wartości ** zainicjować ** podałem trywialne rozwiązanie, które z przyjemnością zaakceptował. Jeśli możesz zamieścić lepszą odpowiedź, edytuj swoją wcześniejszą wersję i wskrzesz ją zamiast mnie. –
1) Jeśli pytanie OP było o inicjalizacji, nie powinieneś wprowadzać go w błąd mówiąc "używaj składni = {} podczas definiowania". 2) PO nie powiedział, że chce, aby wszystko było "0". Tak więc zbiór jest bezużyteczny dla wszystkich typów danych oprócz wartości char i zero. 3) Jeśli chcesz tylko pomóc mu użyć sztuczki, pisz w komentarzach i podaj właściwą odpowiedź w sekcji odpowiedzi. –