Я создал массив структур как глобальную переменную.Я инициализировал массив в функции, и я мог распечатать элементы структуры оттуда.Моя проблема в том, что я не могу распечатать значения массива в другой функции (main () в моем случае), кроме той, которую я использовал для инициализации массива.Пожалуйста, как я могу распечатать эти значения?Спасибо.
#include <stdio.h>
#include <stdlib.h>
/*
*
*/
typedef struct s{
char *value;
} S;
S list[2];
void function( ){
char val1[] = "val1";
char val2[] = "val2";
S v1 = {val1};
S v2 = {val2};
list[0] = v1;
list[1] = v2;
printf("%s\n", list[1].value); //prints val2
}
int main(int argc, char** argv) {
function();
printf("%s", list[1].value); //prints nonsense
return 0;
}
Что я пробовал:
Я изменил функцию (), чтобы взять список в качестве аргумента (функция (список)), и объявил список в main ()вместо.Это не сработало.
Я изменил функцию, чтобы она возвращала список (S * function ()), она не работала.
Я использовал массив целых чисел (вместо структуры, то есть int list [2], объявил ее как глобальную переменную и инициализировал ее в функции ()), и все работало нормально, предполагая, чтопроблема в том, как я получаю доступ к структуре, но я просто не могу понять это.
Я искал в интернете, но не смог получить подобную проблему.