C problem, Links von '->' muss auf Klasse/Struktur/union - /generischen Typ?
Versucht zu verstehen, warum dies nicht funktioniert. Ich bekomme immer folgenden Fehler:
Links '->nextNode' muss auf Klasse/Struktur/union - /generischen Typ
(Auch alle Zeilen mit einem -> in der Funktion new_math_struct)
Header-Datei
#ifndef MSTRUCT_H
#define MSTRUCT_H
#define PLUS 0
#define MINUS 1
#define DIVIDE 2
#define MULTIPLY 3
#define NUMBER 4
typedef struct math_struct
{
int type_of_value;
int value;
int sum;
int is_used;
struct math_struct* nextNode;
} ;
typedef struct math_struct* math_struct_ptr;
#endif
C-Datei
int get_input(math_struct_ptr* startNode)
{
/* character, input by the user */
char input_ch;
char* input_ptr;
math_struct_ptr* ptr;
math_struct_ptr* previousNode;
input_ptr = &input_ch;
previousNode = startNode;
/* as long as input is not ok */
while (1)
{
input_ch = get_input_character();
if (input_ch == ',') //Carrage return
return 1;
else if (input_ch == '.') //Illegal character
return 0;
if (input_ch == '+')
ptr = new_math_struct(PLUS, 0);
else if (input_ch == '-')
ptr = new_math_struct(MINUS, 0);
else if (input_ch == '/')
ptr = new_math_struct(DIVIDE, 0);
else if (input_ch == '*')
ptr = new_math_struct(MULTIPLY, 0);
else
ptr = new_math_struct(NUMBER, atoi(input_ptr));
if (startNode == NULL)
{
startNode = previousNode = ptr;
}
else
{
previousNode->nextNode = ptr;
previousNode = ptr;
}
}
return 0;
}
math_struct_ptr* new_math_struct(int symbol, int value)
{
math_struct_ptr* ptr;
ptr = (math_struct_ptr*)malloc(sizeof(math_struct_ptr));
ptr->type_of_value = symbol;
ptr->value = value;
ptr->sum = 0;
ptr->is_used = 0;
return ptr;
}
char get_input_character()
{
/* character, input by the user */
char input_ch;
/* get the character */
scanf("%c", &input_ch);
if (input_ch == '+' || input_ch == '-' || input_ch == '*' || input_ch == '/' || input_ch == ')')
return input_ch; //A special character
else if (input_ch == '\n')
return ','; //A carrage return
else if (input_ch < '0' || input_ch > '9')
return '.'; //Not a number
else
return input_ch; //Number
}
Den header für die C-Datei enthält nur einen Verweis auf die struct header und die Definitionen der Funktionen. Sprache C.
InformationsquelleAutor Patrick | 2010-05-28
Du musst angemeldet sein, um einen Kommentar abzugeben.
Seit Ihr
math_struct_ptr
enthält bereits die Zeiger gegen die Feststellung, die Sie nicht benötigen, geben Sie es auf den Punkt zu verwenden. Fallen die*
:Oder schreiben
InformationsquelleAutor Johannes Schaub - litb
math_struct_ptr* ist ein math_struct** - erstellen Sie einen Zeiger auf einen Zeiger mit verschachtelten Sterne. Der Vorteil der typedef ist, dass Sie nicht haben, um ein * nach math_struct_ptr, so können Sie einfach lassen, dass aus
InformationsquelleAutor Matt
Ihnen typedef
Also, wenn Sie
math_struct_ptr*
erhalten Sie einen Zeiger auf einen Zeiger. Sie wahrscheinlich wollen einfach nurmath_struct_ptr
in diesem Fall. Ich würde nicht ausblenden des Mauszeigers mittypedef
, ich sehe aber viele Menschen tun das. Ich finde es einfach nur verwirrend. Es ist wahrscheinlich eine Frage des Geschmacks.const math_struct_ptr
undconst math_struct*
sind zwei verschiedene Dinge.InformationsquelleAutor Lucas
Diese Weise werden Sie typedef löst, die Sie verwenden werden:
eher als
Verwenden Sie einfach die math_struct_ptr typedef direkt.
InformationsquelleAutor samoz