Я новичок в C, поэтому, пожалуйста, исправьте все ошибки, которые у меня есть.Распределение переменных структуры C?
Вот код, который вроде как код у меня есть
//typdef stuff for apple, *apple_t here
apple_t get() {
apple a;
a.num = 0;
apple_t ap = &a;
printf("set num to %d\n", ap->num);
return ap;
}
// ap above is placed into read(ap)
void read(apple_t ap) {
printf("num: %d\n", ap->num);
}
Почему это, что для «набор» печать AP-> Num == 0, но когда я делаю Printf в функции чтения Я получаю несколько нежелательных чисел, таких как -1218550893? Что происходит? Выделен ли целочисленный набор? Что такое C? И как вы это исправите?
Вы * возвращаете адрес локальной переменной *, которая является известной ошибкой в C. – Jon
Ваш код имеет [обвисший указатель] (http://stackoverflow.com/questions/5278859/c-dangling -указатель-вопрос). –
Возможный дубликат [Можно ли получить доступ к локальной папке за пределами ее области?] (Http://stackoverflow.com/questions/6441218/can-a-local-variables-memory-be-accessed-outside-its-scope) – Jon