1
typedef struct {
        nat id;
        char *data;
        } element_struct;

typedef element_struct * element;

void push(element e, queue s) {
        nat lt = s->length;
        if (lt == max_length - 1) {
                printf("Error in push: Queue is full.\n");
                return;
        }
        else {
                s->contents[lt] = e;
                s->length = lt + 1;
        }
}
int main () {
         push(something_of_type_element, s);
}

" " をフォーマットするにはどうすればよいsomething_of_type_elementですか?

ありがとう

注: nat は int と同じです

4

2 に答える 2

3

どうですか:

element elem = malloc(sizeof(element_struct));
if (elem == NULL) {
    /* Handle error. */
}

elem->id = something;
elem->data = something_else;

push(elem, s);

ここには多くのメモリ管理が欠けていることに注意してください...

于 2008-11-13T02:44:34.320 に答える
1

このような:

element_struct foo = { 1, "bar" };
push(&foo, s);

C99 コンパイラを使用している場合は、次のようにできます。

element_struct foo = {
    .id = 1,
    .data = "bar"
};
push(&foo, s);

構造内のデータが定義されたスコープよりも長く存続する必要がある場合は、構造内のデータをコピーする必要があることに注意してください。それ以外の場合は、malloc を使用してメモリをヒープに割り当てるか (以下を参照)、グローバル変数または静的変数を使用できます。

element_struct foo = malloc(sizeof (element_struct));

foo.id = 1;
foo.data = "bar";
push(foo, s);
于 2008-11-13T02:44:55.520 に答える