В стандарте C нет локальных функций.Вам необходимо переместить функцию Data
из main
.
. Возможно, вам нужно следующее:
#include <stdio.h>
#include <stdlib.h>
struct TestData {
int * a;
};
void Data(struct TestData * addstruct) {
int b;
addstruct->a = &b;
}
int main() {
struct TestData * p1 = (struct TestData *)malloc(sizeof(struct TestData));
Data(p1);
printf("%p", (void*)p1); // %p needs casting to (void*)
free(p1);
return 0;
}
Этот код компилируется правильно, но есть другая проблема:
void Data(struct TestData * addstruct) {
int b;
addstruct->a = &b;
}
Вы помещаете указатель на локальную переменную b
в addstruct->a
, но как только Data
заканчивается, b
больше не существует и, следовательно, addstruct->a
указываетв мусор.
Читайте также следующие статьи SO: