Я хочу написать эту программу, где у меня есть это в одном файле с именем intarray.c
:Ошибка: неправильное использование неопределенного типа «STRUCT INTArray»
#include <stdio.h>
#include <stdlib.h>
#include "intarray.h"
struct IntArray
{
int length;
int *array;
};
struct IntArray erzeugeArr(int length)
{
struct IntArray erzeugt = {length, (int *)malloc(sizeof(int)*length)};
return erzeugt;
}
и это в тесте основной:
struct IntArray *string;
string = &(erzeugeArr(5));
Теперь, что я получаю это:
Misuse of undefined type "struct IntArray"
из последнего бита с string = …
. Я много искал, но я не понимаю проблемы! Если я делаю это так:
void erzeugeArr(struct IntArray *erzeuge, int length)
{
struct IntArray erzeugt = {length, (int *)malloc(sizeof(int)*length)};
erzeuge = &erzeugt;
}
и
struct IntArray *string;
erzeugeArr(string, 5);
, то я могу скомпилировать свою программу, но при запуске его, я получаю ошибку сегментации, который я предполагаю, я получаю, потому что основной имеет нет доступа к erzeugt
?
Просьба [короткий, автономный, правильный пример] (http://sscce.org/). Из того, что я вижу, причина может быть тривиальной, так как забыть включить заголовок. Но это трудно сказать, когда я не вижу, что вы на самом деле пытаетесь скомпилировать. – Oswald
Почему вы не использовали обычный массив, чем удаленный массив? –
В обоих случаях вы возвращаете локальную переменную из функции. Время, чтобы прочитать о * переменной области * в C. – kotlomoy