Java には数年の経験がありますが、C にはまだ慣れていません。ポインタをいつ、いつ使用しないかを理解するのにまだ苦労しています。この基本コードが与えられたので、「プッシュ」メソッドを終了して次の要素をスタックにプッシュする必要がありますが、次のエラーが表示されます。
構造体ではないメンバー 'top' の要求。
#include <assert.h>
#include <libgen.h>
#include <stdio.h>
#include <stdlib.h>
int exit_status = EXIT_SUCCESS;
#define EMPTY (-1)
#define SIZE 16
typedef struct stack stack;
struct stack {
int top;
double numbers[SIZE];
};
void push (stack *the_stack, double number) {
if(&&the_stack.top>=SIZE-1){
printf("error");
}else{
the_stack.numbers[&&the_stack.top++ ] = number;
}
}
int main (int argc, char **argv) {
if (argc != 1) {
fprintf (stderr, "Usage: %s\n", basename (argv[0]));
fflush (NULL);
exit (EXIT_FAILURE);
}
stack the_stack;
the_stack.top = EMPTY;
char buffer[1024];
for (;;) {
int scanrc = scanf ("%1023s", buffer);
if (scanrc == EOF) break;
assert (scanrc == 1);
if (buffer[0] == '#') {
scanrc = scanf ("%1023[^\n]", buffer);
continue;
}
char *endptr;
double number = strtod (buffer, &endptr);
if (*endptr == '\0') {
push (&the_stack, number);
}else if (buffer[1] != '\0') {
bad_operator (buffer);
}else {
do_operator (&the_stack, buffer);
}
}
return exit_status;
}
私は非常に基本的なものを見落としていますか?