У меня есть такая структура:
typedef struct {
int sizes[3];
float **vals[3]; // an array of size 3 of float ** pointers
} mystruct;
Я пытаюсь установить значения этих массивов в функции, которая принимает указатель на mystruct
.
void populateStruct(mystruct *s) {
int i, j, n;
for (n = 0; n < 3; n++) {
scanf("%d", &s->sizes[n]);
// Malloc the float pointers (**vals) based on the scanned sizes
s->vals[n] = (float **)malloc(s->sizes[n] * sizeof(float *));
for (i = 0; i < s->sizes[n]; i++)
s->vals[n][i] = (float *)malloc(s->sizes[n] * sizeof(float));
// Populate the float "arrays"
for (i = 0; i < s->sizes[n]; i++) {
for (j = 0; j < s->sizes[n]; j++) {
scanf("%f", &s->vals[n][i][j]);
}
}
}
}
Вот как я использую функцию в main
:
int main() {
mystruct *s1;
populateStructure(s1);
return 0;
}
Этот код компилируется нормально, но при запуске я получаю ошибку сегмента.Си не моя сильная сторона, поэтому я не слишком уверен, что делаю не так.